ЗАДНИЙ ПЛАН:
У меня есть обработчик 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
Я исправил проблему.
Одной из проблем было выполнение конфигурации Timeout в web.config. и после этого изменения вторая проблема была связана с длительным временем работы, которое запрос прерывал Интернет (сетевая связь). Я уверен, что у меня есть надежное подключение к Интернету и протестировано снова.
сконфигурировали веб-серверы следующим образом.
<httpRuntime executionTimeout="7200" enable="true" maxRequestLength="2048576" useFullyQualifiedRedirectUrl="false" />
а также
[WebMethod(Description = "Delete template",BufferResponse = false)]
Указание "BufferResponse = false" указывает, что.NET должен начать отправлять ответ клиенту, как только какая-либо часть ответа станет доступной, вместо того, чтобы ждать, пока весь ответ станет доступным.