IIS 7 не обслуживает документ по умолчанию - PullRequest
19 голосов
/ 05 августа 2011

У нас возникла проблема на некоторых наших рабочих станциях для разработчиков: при посещении URL-адреса без имени файла (например, http://localhost/), IIS 7 возвращает ошибку 404 . Все работают под управлением Windows 7 / IIS7.5 и ASP.NET 4.0. Пул приложений настроен на использование классического конвейерного режима.

Документы по умолчанию включены, а default.aspx находится в списке документов по умолчанию.

Я включил неудачный запрострассировки, и посмотрите это в журнале:

OldHandlerName="", NewHandlerName="ExtensionlessUrl-ISAPI-4.0_64bit", 
  NewHandlerModules="IsapiModule", 
  NewHandlerScriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll", NewHandlerType=""

Позже я вижу, что этот IsapiModule отклоняет запрос:

ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="404",
  HttpReason="Not Found", HttpSubStatus="0", 
  ErrorCode="The operation completed successfully. (0x0)", ConfigExceptionInfo="" 

Похоже, IIS считает ExtensionlessUrl-ISAPI-4.0-64bit должен обрабатывать запрос . Когда я смотрю на конфигурацию этого модуля, он показывает, что он должен соответствовать пути *., поэтому я запутался, почему он не соответствует ни одному пути.

Поисковая система Google обнаруживает эту запись на форумах IIS.net с 2005 года. К сожалению, никаких решений не предлагается, только признание проблемы.

Когда яОбновитьмой пул приложений для использования интегрированного режима, проблема исчезает. К сожалению, он должен работать в классическом режиме.

Что я могу сделать, чтобы IIS снова отправил на сервер наши документы по умолчанию?

Ответы [ 6 ]

22 голосов
/ 09 августа 2011

Похоже, Microsoft выпустила обновление, позволяющее обработчику HTTP ExtensionlessURL работать с URL-адресами без расширений .К сожалению, это нарушает некоторые другие обработчики.В моем случае обработчик DefaultDocument в классических пулах приложений.Решение состоит в том, чтобы удалить обработчики ExtensionlessURL в web.config нашего приложения:

<system.webServer>
  <handlers>
    <remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
    <remove name="ExtensionlessUrl-ISAPI-4.0_64bit" />
    <remove name="ExtensionlessUrl-Integrated-4.0" />
  </handlers>
</system.webServer>
15 голосов
/ 14 июня 2013

Я решил проблему с помещением обработчика «StaticFile» в HandlerMapping перед «ExtensionlessUrlHandler - *»

1 голос
/ 06 января 2014

Я заметил, что при удалении управляемой платформы .NET (4.0) из пула приложений это также помогло мне решить проблему!

Мы вообще не используем .NET в нашей среде IIS!

0 голосов
/ 04 октября 2017

Я использую следующее правило в web.config URL Redirect в качестве обходного пути для решения этой проблемы:

 <system.webServer>
    <rewrite>
      <rules>
        <rule name="Default document rewrite" stopProcessing="true">
          <match url="^(.+/)?$" />
          <action type="Redirect" url="https://{HTTP_HOST}/default.aspx" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
0 голосов
/ 15 июня 2017

Добавление компонента DefaultDocument в IIS в функции добавления / удаления окон, а затем вставка имени моего скрипта по умолчанию (index.php) работала для меня.

0 голосов
/ 19 июня 2013

Изменение порядка StaticFile помогло решить проблему при настройке документа по умолчанию для приложения веб-сайта в IIS, в то время как корневой сайт также имел другой документ по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...