DefaultDocument вдруг не работает на IIS7 - PullRequest
4 голосов
/ 04 января 2011

У меня есть веб-сайт, который работает на 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.

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

Что еще можно попробовать?

1 Ответ

7 голосов
/ 04 января 2011

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

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

...