Сообщение об ошибке при посещении веб-сайта, размещенного в IIS 7.0 или более поздних версий: ошибка HTTP 404.17 — не найдено
Эта статья поможет устранить ошибку HTTP 404.17 — не найдена при посещении веб-сайта, размещенного в службах IIS 7.0 или более поздних версий.
Оригинальная версия продукта: службы IIS
Исходный номер базы знаний: 2019689
Симптомы
У вас есть веб-сайт, размещенный в IIS 7.0 или более поздних версий. При переходе к динамическому содержимому на веб-сайте с помощью веб-браузера может появиться сообщение об ошибке, похожее на следующее:
Сводка по ошибкам
Ошибка HTTP 404.17 — не найдено
Запрошенный контент представляется скриптом и не будет обслуживаться обработчиком статических файлов.
Подробные сведения об ошибке:Module StaticFileModule
Notification ExecuteRequestHandler
Обработчик StaticFile
0x80070032 кода ошибкиЗапрошенный URL-адрес http://iisserver:80/page.aspx
Физический путь C:\inetpub\wwwroot\page.aspx
Анонимный метод входа
Анонимный пользователь входа
Причина
Эта ошибка возникает из-за того, что обработчик HTTP, настроенный для обработки запроса, имеет определенные предварительные условия, но его пул приложений не соответствует некоторым или всем этим предварительным требованиям. Это приводит к использованию обработчика статических файлов для обработки запроса. Обработка запроса завершается сбоем, и возвращается состояние 404.17 , так как запрос предназначен для динамического ресурса, а не для статического.
Например, рассмотрим следующее сопоставление обработчика:
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
В этом случае возвращается ошибка 404.17, если ресурс *.aspx, запрашиваемый с сайта, обрабатывается в пуле приложений, который не работает в Classic
режиме, не является 32-разрядным или не работает в версии 2.0 платформа .NET Framework. Для правильного обслуживания ресурса в этом примере необходимо выполнить все три предварительных условия. В частности, пул приложений, в котором размещается этот ресурс, должен быть настроен для Classic
режима, он должен быть настроен для использования версии 2.0 платформа .NET Framework, а также для 32-разрядных приложений.
Разрешение
Чтобы устранить эту проблему, настройте пул приложений, в котором размещается приложение, в соответствии со всеми предварительными условиями, заданными для обработчика.
Открытие диспетчера IIS
Разверните имя компьютера и щелкните Пулы приложений в левой области.
Выделите пул приложений, в котором размещен ресурс, на средней панели.
В правой области щелкните Дополнительные параметры...
В диалоговом окне Дополнительные параметры в категории (Общие) настройте следующие параметры в соответствии с требованиями обработчика:
- версия платформа .NET Framework
- Включение 32-разрядных приложений
- Режим управляемого конвейера
Дополнительная информация
Сведения в этом разделе помогут определить, какие обработчики настроены для веб-сайта и приложения, упомянутых в ошибке, а также определить предварительные условия, настроенные для этого обработчика.
команды Appcmd.exe
Следующие команды можно использовать для определения обработчиков, настроенных для веб-сайта, указанного в выходных данных ошибки.
Вывод списка пула приложений
В следующих командах показано, как определить, в каком пуле приложений выполняется приложение, а затем перечислить предварительные условия, настроенные для этого пула приложений.
C:\Windows\System32\inetsrv>appcmd.exe list apps /site.name:"Default Web Site"
APP "Default Web Site/" (applicationPool:DefaultAppPool)
C:\Windows\System32\inetsrv>appcmd.exe list apppools
APPPOOL "DefaultAppPool" (MgdVersion:v2.0,MgdMode:Integrated,state:Started)
Обработчики списка
Эта команда выводит обработчики, настроенные для конкретного приложения на веб-сайте по умолчанию.
C:\Windows\System32\inetsrv>appcmd.exe list config "Default Web Site/application" -section:handlers
<system.webServer>
<handlers accessPolicy="Read, Script">
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
<add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" />
</handlers>
</system.webServer>
В случае ASP.NET для ресурса *.aspx может быть настроено множество обработчиков. В некоторых случаях обработчик может просто быть изменен в соответствии с пулом приложений, в котором выполняется приложение. Ниже приведен список различных обработчиков ASP.NET 2.0 с различными параметрами предварительных условий.
32/64-разрядный обработчик интегрированного режима ASP.NET 2.0
<add name="PageHandlerFactory-Integrated" path="*.aspx" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.PageHandlerFactory" preCondition="integratedMode" />
32-разрядный обработчик классического режима ASP.NET 2.0
<add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" />
64-разрядный обработчик классического режима ASP.NET 2.0
<add name="PageHandlerFactory-ISAPI-2.0-64" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness64" responseBufferLimit="0" />
Действия по воспроизведению
Создайте каталог, содержащий два файла.
Test.aspx с содержимым
<%Response.Write("Hello World")%>
Web.config с содержимым:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <httpRedirect enabled="false" destination="http://TestSite" exactDestination="false" childOnly="false" httpResponseStatus="Permanent" /> <security> </security> <handlers> <clear/> <add name="PageHandlerFactory-ISAPI-2.0" path="*.aspx" verb="GET,HEAD,POST,DEBUG" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv2.0,bitness32" responseBufferLimit="0" /> <add name="StaticFile" path="*" verb="*" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" resourceType="Either" requireAccess="Read" /> </handlers> </system.webServer> <system.web> <authentication mode="Windows"> <forms cookieless="UseCookies" /> </authentication> </system.web> </configuration>
Создайте приложение IIS 7.0 или более поздней версии, которое указывает на каталог с этими двумя файлами.
Настройте новое приложение для запуска в пуле приложений, настроенном для интегрированного режима.
Перейдите к test.aspx.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по