DefaultDocument внезапно не работает на IIS7

У меня есть веб-сайт, который работает на IIS7 около 2 месяцев. У нас есть документы по умолчанию, настроенные на загрузку страницы default.asp, когда пользователи переходят в домен без страницы. Внезапно этим утром я получаю ошибки, и документ по умолчанию не загружается. Если я наберу default.asp, файл загрузится нормально.

Информация об ошибке:
Модуль: DefaultDocumentModule
Уведомление: ExecuteRequestHandler
Обработчик: StaticFile
Код ошибки: 0x80070002

вот раздел из моего applicationhost.config:

<system.webServer>

    <asp>
        <cache diskTemplateCacheDirectory="%SystemDrive%\inetpub\temp\ASP Compiled Templates" />
    </asp>

    <defaultDocument enabled="true">
        <files>
            <clear />
            <add value="Default.asp" />
            <add value="Default.htm" />
            <add value="index.htm" />
            <add value="index.html" />
            <add value="iisstart.htm" />
        </files>
    </defaultDocument>

    <directoryBrowse enabled="false" />

    <globalModules>
        <add name="UriCacheModule" image="%windir%\System32\inetsrv\cachuri.dll" />
        <add name="FileCacheModule" image="%windir%\System32\inetsrv\cachfile.dll" />
        <add name="TokenCacheModule" image="%windir%\System32\inetsrv\cachtokn.dll" />
        <add name="HttpCacheModule" image="%windir%\System32\inetsrv\cachhttp.dll" />
        <add name="StaticCompressionModule" image="%windir%\System32\inetsrv\compstat.dll" />
        <add name="DefaultDocumentModule" image="%windir%\System32\inetsrv\defdoc.dll" />
        <add name="DirectoryListingModule" image="%windir%\System32\inetsrv\dirlist.dll" />
        <add name="ProtocolSupportModule" image="%windir%\System32\inetsrv\protsup.dll" />
        <add name="HttpRedirectionModule" image="%windir%\System32\inetsrv\redirect.dll" />
        <add name="ServerSideIncludeModule" image="%windir%\System32\inetsrv\iis_ssi.dll" />
        <add name="StaticFileModule" image="%windir%\System32\inetsrv\static.dll" />
        <add name="AnonymousAuthenticationModule" image="%windir%\System32\inetsrv\authanon.dll" />
        <add name="RequestFilteringModule" image="%windir%\System32\inetsrv\modrqflt.dll" />
        <add name="CustomErrorModule" image="%windir%\System32\inetsrv\custerr.dll" />
        <add name="HttpLoggingModule" image="%windir%\System32\inetsrv\loghttp.dll" />
        <add name="RequestMonitorModule" image="%windir%\System32\inetsrv\iisreqs.dll" />
        <add name="IsapiModule" image="%windir%\System32\inetsrv\isapi.dll" />
        <add name="IsapiFilterModule" image="%windir%\System32\inetsrv\filter.dll" />
        <add name="CgiModule" image="%windir%\System32\inetsrv\cgi.dll" />
        <add name="FastCgiModule" image="%windir%\System32\inetsrv\iisfcgi.dll" />
        <add name="ManagedEngine" image="%windir%\Microsoft.NET\Framework\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness32" />
        <add name="ConfigurationValidationModule" image="%windir%\System32\inetsrv\validcfg.dll" />
        <add name="ManagedEngine64" image="%windir%\Microsoft.NET\Framework64\v2.0.50727\webengine.dll" preCondition="integratedMode,runtimeVersionv2.0,bitness64" />
        <add name="RewriteModule" image="%SystemRoot%\system32\inetsrv\rewrite.dll" />
        <add name="ManagedEngineV4.0_32bit" image="C:\Windows\Microsoft.NET\Framework\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness32" />
        <add name="ManagedEngineV4.0_64bit" image="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\webengine4.dll" preCondition="integratedMode,runtimeVersionv4.0,bitness64" />
        <add name="WebDAVModule" image="%SystemRoot%\system32\inetsrv\webdav.dll" />
        <add name="WindowsAuthenticationModule" image="%windir%\System32\inetsrv\authsspi.dll" />
    </globalModules>

Я также проверил, что модули физически существуют на диске. Я не знаю о каких-либо изменениях на этом сервере, и документ по умолчанию определенно работал до вчерашнего дня. Сервер — Windows Server 2008 x64 с IIS 7.0.

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

Что еще я могу попробовать?


person Stephen    schedule 04.01.2011    source источник
comment
Вы пытались запустить Process Monitor technet.microsoft.com/en-us/sysinternals/bb896645 затем перезапустить IIS и получить доступ к странице? Это должно показать вам точный путь, который он пытается прочитать и терпит неудачу. (Как вы знаете, 0x80070002 == ERROR_FILE_NOT_FOUND.)   -  person Rup    schedule 04.01.2011
comment
Я смотрю через Process Monitor, но там так много всего.. Я не знаю, на что смотреть. Можете ли вы мне помочь? Я включил фильтр для имени процесса = w3wp.exe, и результат не УСПЕШЕН. По-прежнему получаю сотни обращений в секунду. это на производственном веб-сервере. Должен ли я фильтровать операцию или есть другие способы ограничения, чтобы я знал, что искать?   -  person Stephen    schedule 04.01.2011
comment
Кстати, похоже, что iis добавляет \web.config в конец каждого запроса?? это нормально? Я вижу путь, по которому я пытаюсь перейти с помощью default.asp, но непосредственно перед тем, как получить доступ к этой странице, он пытается использовать default.asp\web.config. он делает это для каждого файла и каждый раз возвращает ПУТЬ НЕ НАЙДЕН.   -  person Stephen    schedule 04.01.2011


Ответы (1)


Мой коллега и я преследовали это все утро, и кто-то в IRC указал нам на решение. Оказывается, у IIS возникли проблемы с документом по умолчанию, потому что корневая папка веб-сайта была помечена как скрытая. По-видимому, когда папка скрыта, модуль документа по умолчанию не может ее найти, и вы получаете сообщение об ошибке ERROR_FILE_NOT_FOUND, показанное выше.
Мы проверили это поведение на сервере разработки, установив корневую веб-папку как скрытую, и, конечно же, получили ту же ошибку для документ по умолчанию. Удален атрибут «Скрытый», и документ по умолчанию загружается правильно.

Сегодня я видел много вопросов по этому поводу, и никто не опубликовал ответ, который соответствовал бы нашей проблеме. Я хочу сказать спасибо тому, кто был на IRC! И, надеюсь, это поможет другим опубликовать его здесь.

person Stephen    schedule 04.01.2011