Web.config в подкаталоге игнорируется - PullRequest
2 голосов
/ 18 октября 2010

У нас есть web.config в физическом подкаталоге виртуального каталога, который находится в приложении на сайте IIS. Примерно так:

  • Сайт
    • App
      • Web.config
      • Virtual Dir
        • Subdir
          • Web.config

В файле Web.config мы помещаем эту конфигурацию в system.web:

<webServices>
  <protocols>
    <add name="HttpPost" />
    <add name="HttpGet" />
  </protocols>
</webServices>

Мы включаем оба протокола для ASMX в этом подкаталоге.

Некоторое время все работает нормально, а затем просто останавливается, и эти протоколы просто перестают работать. Мы перезапускаем IIS, и он снова начинает работать.

Чтобы исправить это, мы использовали обходной путь, чтобы добавить эту конфигурацию в приложение Web.config, и тогда она просто отлично работает. Но мы хотели бы избежать изменения приложения Web.config и вместо этого заставить подкаталог Web.config работать.

Есть идеи, почему ASP.Net через некоторое время просто перестанет рассматривать подкаталог Web.config?

Мы размещаемся на Windows Server 2003, IIS 6, ASP.Net 2.0.

HTTP-запросы POST к ASMX перестают работать. Мы получаем ошибку System.InvalidOperationException с этим сообщением:

Формат запроса не распознается для URL, неожиданно заканчивающегося на «/blah» .

Трассировка стека:

at System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

1 Ответ

0 голосов
/ 18 октября 2010

Маловероятно, что get и post действительно периодически игнорируются.

Что делает ваш ASMX? Если вы выделяете и не освобождаете ресурс - например, соединение с другой службой или объектом WCF - или входите в длительную задачу, IIS может перестать отвечать на запросы, когда эти ресурсы исчерпаны. Это объясняет, что перезапуск IIS устраняет проблему.

Вы вообще не получаете ответа, ошибка 500 или что? Что-нибудь в журнале событий?

...