Я пока не уверен, что вам нужно обратиться к ADPlus - то, что он обнаружил с помощью ADPlus, вы уже знаете - а именно, что наиболее вероятный виновник - это то, что меняет текущий каталог.
Ключевым моментом, по-видимому, является то, что IISReset устраняет проблему на некоторое время, но проблема возвращается через некоторое время, как только что-то происходит на одном из сайтов на сервере. Под «сайтами» здесь я предполагаю, что вы имеете в виду приложение ASP.NET - подтвердите, если это не случай.
То, что проблема возникает на нескольких сайтах, указывает на то, что проблема может быть связана с фильтром или расширением ISAPI или файлом .EXE, который сопоставлен с символом подстановки в одном или нескольких конкретных приложениях ASP.NET.
Итак, запустите IIS Manager и обновите свой вопрос информацией о фильтрах ISAPI и сопоставлениях с подстановочными знаками. Информация о фильтре ISAPI будет находиться на вкладке «Фильтры ISAPI» в диалоговом окне «Свойства» для веб-сайта (в разделе «Веб-сайты» в древовидном представлении в диспетчере IIS). Подстановочные сопоставления будут отображаться в диалоговом окне «Конфигурация приложения», которое вы вызываете с помощью кнопки «Конфигурация ...» в диалоговом окне «Свойства» для вашего конкретного приложения ASP.NET.
Как и сопоставления с подстановочными знаками, точно посмотрите, какие сопоставления зарегистрированы для расширений .aspx, и сообщите о них в своем обновлении.
Проблема также может быть в HttpHandlers
, установленном на отдельных веб-сайтах ASP.NET - поэтому посмотрите в разделе <httphandler>
в Web.config
, чтобы увидеть, определен ли обработчик с чем-то вроде
<add verb="*" path="*.aspx" type="..." />
Это может быть приложение, отличное от того, с которым вы работаете. Чтобы узнать, можете ли вы отследить, какой из них, проверьте журналы сервера после IISReset, чтобы увидеть, какая из записей первой возвращает код состояния HTTP 5xx (указывающий на внутреннюю ошибку сервера), и посмотрите на запрос, который его вызвал. Приложение, которое обработало это, может быть тем, на котором сосредотачиваются.
Все, что я предложил, должно быть безопасно на производственном сервере :-) Я не предлагаю, чтобы вы на самом деле делали сброс IIS, просто проверяйте журналы сразу после последнего, который вы сделали.
Обновление: Я видел обновленную информацию, которую вы разместили. Это может быть ISAPI_Rewrite3 или нет; Я, конечно, использовал его раньше без проблем. Тем не менее, я удивлен, увидев ASP.NET_2.0.xxx в списке фильтров ISAPI - у меня его нет (у меня Windows Server 2003). Таким образом, я бы (если позволит время - вам может потребоваться запланировать отключение) временно удалил эти два фильтра ISAPI из списка (таким образом, чтобы вы могли легко восстановить их снова) и посмотрел, имеет ли это значение. Если кажется, что ситуация ухудшилась, добавьте фильтр ASP.NET обратно (каков точный путь к этой записи?) И пропустите ISAPI_Rewrite3, затем повторите попытку.
Причина, по которой я удивляюсь, что ASP.NET DLL в списке фильтров ISAPI заключается в том, что она обычно настраивается с использованием сопоставлений для каждого приложения (где приложения наследуют конфигурацию по умолчанию). Обычно он работает как расширение ISAPI , а не как фильтр ISAPI .
Можете ли вы также проверить <httpmodules>
разделы так же, как для <httphandlers>
?
Может потребоваться снова запустить aspnet_regiis, который инициализирует систему ASP.NET для IIS; Это, однако, большой шаг , который может многое сломать. Если возможно, скопируйте весь сервер на запасной компьютер в отдельной тестовой сети или в сети разработчиков и сделайте это там. Можете ли вы использовать свое локальное зеркало для такого рода испытаний?