iis 7.5 - servidor - IIS 7 no sirve el documento predeterminado
iis servidor web (6)
Agregar el componente DefaultDocument a IIS para agregar / eliminar características de Windows y luego insertar el nombre de mi script predeterminado (index.php) funcionó para mí.
Tenemos un problema en algunas de nuestras estaciones de trabajo de desarrollador: al visitar una URL sin un nombre de archivo (por ejemplo, http://localhost/ ), IIS 7 devuelve un error 404 . Todos ejecutan Windows 7 / IIS 7.5 y ASP.NET 4.0. El grupo de aplicaciones está configurado para utilizar el modo de canalización clásico.
Los documentos predeterminados están habilitados y default.aspx está en la lista de documentos predeterminados.
He habilitado el rastreo de solicitudes fallidas, y veo esto en el registro:
OldHandlerName="", NewHandlerName="ExtensionlessUrl-ISAPI-4.0_64bit",
NewHandlerModules="IsapiModule",
NewHandlerScriptProcessor="C:/Windows/Microsoft.NET/Framework64/v4.0.30319/aspnet_isapi.dll", NewHandlerType=""
Más adelante, veo que este IsapiModule está rechazando la solicitud:
ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="404",
HttpReason="Not Found", HttpSubStatus="0",
ErrorCode="The operation completed successfully. (0x0)", ConfigExceptionInfo=""
Parece que IIS piensa que ExtensionlessUrl-ISAPI-4.0-64bit debería manejar la solicitud . Cuando miro la configuración de ese módulo, muestra que debería coincidir con la ruta *.
, así que estoy confundido por qué no coincide con ningún camino.
Una búsqueda en Google muestra esta publicación en los foros de IIS.net desde 2005. Lamentablemente, no se ofrecen soluciones, solo un reconocimiento del problema.
Cuando actualizo mi grupo de aplicaciones para usar el modo integrado, el problema desaparece. Desafortunadamente, tiene que ejecutarse en modo clásico.
¿Qué puedo hacer para que IIS vuelva a servir nuestros documentos predeterminados?
Cambiar el orden de StaticFile ayudó a solucionar el problema, al configurar el documento predeterminado para una aplicación de sitio web en IIS, mientras que el sitio web raíz también tenía otro documento predeterminado.
Noté que al eliminar el marco .NET administrado (4.0) del grupo de aplicaciones, ¡también solucioné el problema para mí!
¡No utilizamos .NET en absoluto en nuestro entorno IIS!
Parece que Microsoft lanzó una actualización que permite que el controlador HTTP ExtensionlessURL funcione con URL sin extensión . Desafortunadamente, esto rompe a otros manejadores. En mi caso, el controlador DefaultDocument en grupos de aplicaciones clásicas. La solución es eliminar los controladores ExtensionlessURL en el archivo web.config de nuestra aplicación:
<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>
Resolví el problema con poner el controlador "StaticFile" en HandlerMapping delante de "ExtensionlessUrlHandler- *"
Uso la siguiente regla en web.config URL Redirect como solución para resolver esto:
<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>