Невозможно отправить длинную строку JSON в ASP.NET HttpHandler с помощью вызова jquery ajax (IIS 6)

0

ЗАДНИЙ ПЛАН:

У меня есть обработчик Http, который принимает номера SIM/CDMA ('8953502103000101242') в формате json string из jQuery Ajax-вызова с использованием метода http POST для активации их на сервере.

ПРОБЛЕМА:

В среде локального развития я могу отправить до 65 тыс. Номеров SIMS (8953502103000101242 ключ/значение в строке json). Но когда я развертываю сервер LIVE, я столкнулся со следующей проблемой.

Если я отправляю 2000 номеров SIMS, разделенных запятой на Http-обработчик, тогда обработчики Http успешно получают HTTP-запрос. Но когда я отправляю больше (3000, 4000, 5000 SIM-номеров в json-строке), то HTTP-запрос не доходит до HttpHandler на сервере даже после нескольких ч.

Если я отправлю 5000 сим-номеров в http POST с помощью jquery, тогда отправленный общий запрос размера составляет 138,0 КБ. и он должен быть передан серверу, потому что сервер maxRequestLength равен 2048576. Но он не отправляется на сервер при его развертывании на реальном сервере, и он отлично работает в локальной среде разработки.

TRIED SOLUTION:

Я попытался решить проблему, отредактировав конфигурацию httpRuntime в web.config следующим образом

Используя вышеприведенную конфигурацию httpRuntime, я заметил в сетевом состоянии firebug Firefox, что он продолжает ждать отправки запроса как executeTimeout = "7200", но если executeTimeout = "600", то он возвращает ошибку тайм-аута.

ИЗМЕНЕННОЕ РЕШЕНИЕ:

Я думаю, что если я попытаюсь выполнить синхронизацию выше элемента httpRuntime в файле Machine.config, тогда он будет работать нормально.

ТРЕБУЕМЫЙ СОЛУТИН

ЧТО МОЖЕТ БЫТЬ ПРОБЛЕМА И КАК РЕШИТЬ ЭТО. ПОЖАЛУЙСТА, ПРЕДЛАГАЙТЕ В ЭТОМ РЕГИСТРАЦИИ. ОЖИДАНИЕ БЫСТРОГО РЕШЕНИЯ.

JQuery для HttpHandler выглядит следующим образом:

$.ajax({
                type: "POST",
                url: "../../HttpHandlers/PorthosCommonHandler.ashx",
                data: { order: JSON.stringify(orderObject), method: "ValidateOrderInput", orgId: sCId, userId: uId, languageId: lId },
                success: function(response) {
                    var orderResult = new dojo.data.ItemFileReadStore({
                        data: {
                            jsId: "jsorderResult",
                            id: "orderResult",
                            items: response.Data
                        }
                    });
});

ОБНОВИТЬ

Я поставил диагноз проблемы. Одной из проблем было выполнение конфигурации Timeout в web.config. и после этого изменения вторая проблема была связана с длительным временем работы, которое запрос прерывал Интернет (сетевая связь). Я удостоверился, что у меня есть надежное подключение к Интернету и проверено его снова, и это сработало.

НО Теперь я столкнулся с другой проблемой. Мой httphandler отправляет запрос в webservice, и я получаю следующее исключение в ответ.

The operation has timed out
Теги:
httphandler

1 ответ

0
Лучший ответ

Я исправил проблему.

Одной из проблем было выполнение конфигурации Timeout в web.config. и после этого изменения вторая проблема была связана с длительным временем работы, которое запрос прерывал Интернет (сетевая связь). Я уверен, что у меня есть надежное подключение к Интернету и протестировано снова.

сконфигурировали веб-серверы следующим образом.

<httpRuntime executionTimeout="7200" enable="true" maxRequestLength="2048576" useFullyQualifiedRedirectUrl="false" />

а также

[WebMethod(Description = "Delete template",BufferResponse = false)]

Указание "BufferResponse = false" указывает, что.NET должен начать отправлять ответ клиенту, как только какая-либо часть ответа станет доступной, вместо того, чтобы ждать, пока весь ответ станет доступным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню