Вызов AJAX не запускает рабочий процесс IIS? - PullRequest
1 голос
/ 22 декабря 2010

Прежде всего, я не профессионал в теме конфигурации IIS.

С учетом сказанного я получил веб-сайт, написанный на веб-формах VB.NET 3.5. У меня есть небольшой веб-сервис ASMX, работающий как часть этого сайта. Одна страница на сайте вызывает веб-сервис с AJAX (функция jQuery $ .ajax, post). Сервер работает под управлением Windows 2003 и IIS 6.0. Веб-сайт и веб-служба совместно используют один и тот же пул приложений.

В свойствах пула приложений IIS есть параметр «Тайм-аут простоя», который говорит «Завершить рабочие процессы после простоя в течение N (время в минутах)». Проблема в том, что когда рабочий процесс завершает работу через N минут, он больше не запускается ни при каких вызовах AJAX со страницы. Есть идеи, что делать в такой ситуации? Ранее я имел дело только с .NET MVC с точки зрения AJAX, и никогда не видел ничего подобного.

В логах ошибок нет. Вот что возвращает сервер через XmlHttpRequest:

Состояние готовности: 4

Статус: 500

Текст состояния: Внутренняя ошибка сервера

Xhr Сообщение: undefined

Текст ответа: {"Сообщение": "Был ошибка обработки запроса. ", "StackTrace": "", "ExceptionType": ""}

Мне сказали, что установка значения выключения на большое число, например, 24 часа, исправит это ... Я думаю, что это будет, но мне это не кажется правильным решением. Любой совет высоко ценится. Спасибо!

EDIT: Это вызов JavaScript $ .ajax. Я не уверен, будет ли это иметь какое-либо значение.

  $.ajax({
    type: "POST",
    url: "MyWebService.asmx/GetRecordsExceedingMessage",
    data: '{}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result) {
      LMM.Operative_CheckError(result);  //display Records Exceeding Message as validation error
    },
    error: function(xhr, status) {
      LMM.Operative_DisplayClientErrors(xhr);
    }
  });

EDIT: Я только что вспомнил этот маленький кусочек из Web.config сайта:

<webServices>
  <protocols>
    <remove name="HttpGet"/>
    <remove name="HttpPost"/>
    <remove name="HttpPostLocalhost"/>
    <remove name="Documentation"/>
    <remove name="AnyHttpSoap"/>
  </protocols>
</webServices>

Ответы [ 2 ]

0 голосов
/ 22 декабря 2010

Является ли MyWebService.asmx / GetRecordsExceedingMessage правильным способом доступа к asmx? Если вы получите этот URL вручную, он запустит рабочий? Возможно также, что ваш обработчик обрабатывает только определенный тип контента, поэтому ваше приложение / json не будет его запускать.

Я предполагаю, что ваше отображение обработчика не работает, поэтому IIS выдает ошибки и никогда не запускает ваш пул приложений. Попробуйте активировать подробные ошибки для IIS, я знаю, что вы можете сделать это для IIS7 и далее, не знаю, как это сделать в IIS6, возможно, это поможет:

В панели управления IIS выберите веб-сайт, щелкните правой кнопкой мыши свойства и выберите вкладку пользовательских ошибок.

Теперь выберите все пользовательские страницы (нажмите верхнюю страницу, нажмите Shift и щелкните нижнюю страницу) и нажмите «Установить по умолчанию». Все страницы теперь отображаются по умолчанию.

Остановите и перезапустите IIS, и теперь вы должны получить подробные ошибки.

0 голосов
/ 22 декабря 2010

См. Следующую аналогичную публикацию, в которой упоминается, как вообще можно отключить время простоя: Преодолеть паузу компиляции (?) При * вторичном * первоначальном запуске приложения ASP.Net? .Или вы можете установить время ожидания, как вы сказали, или вы можете обмануть и написать службу Windows на сервере, который отправляет запросы на сайт каждые несколько минут.

...