net enable dotnet deploy asp application asp.net-mvc .net-3.5 iis-6

asp.net-mvc - enable - iis install asp net



ASP.NET MVC en IIS 6-asignaciĆ³n de comodines: la solicitud entrante no coincide con ninguna ruta (4)

He intentado configurar mi aplicación Beta 1 MVC en IIS 6 y no puedo ejecutarla correctamente. He agregado una asignación de comodín a .NET isapi DLL como se sugiere en otras publicaciones de blog, pero aparece el siguiente error cuando accedo a la raíz del sitio web:

The incoming request does not match any route. .. [HttpException (0x80004005): The incoming request does not match any route.] System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContextBase httpContext) +147 System.Web.Routing.UrlRoutingHandler.ProcessRequest(HttpContext httpContext) +36 System.Web.Routing.UrlRoutingHandler.System.Web.IHttpHandler.ProcessRequest(HttpContext context) +4 HCD.Intranet.Web.Default.Page_Load(Object sender, EventArgs e) +81 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +15 System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +33 System.Web.UI.Control.OnLoad(EventArgs e) +99 System.Web.UI.Control.LoadRecursive() +47 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1436

Estoy usando la página Default.aspx proporcionada en la aplicación de plantilla MVC que reescribe el acceso a la raíz del sitio web correctamente.

public partial class Default : Page { public void Page_Load(object sender, System.EventArgs e) { HttpContext.Current.RewritePath(Request.ApplicationPath); IHttpHandler httpHandler = new MvcHttpHandler(); httpHandler.ProcessRequest(HttpContext.Current); } }

Si intento acceder a una ruta dentro de la aplicación, como / Project, obtengo la página de error IIS 404 estándar, no la página de error .net.

Intenté agregar la siguiente línea a mi sección Web.config httpHandlers:

<add verb="*" path="*" validate="false" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Esto me dio un error diferente: la página de error de .net 404.

Agregué lo siguiente a mi Global.asax, que no hizo nada:

protected void Application_BeginRequest(object sender, EventArgs e) { if (Context.Request.FilePath.Equals("/")) Context.RewritePath("Default.aspx"); }

Estoy usando la siguiente configuración de ruta (usa el enrutamiento relajante proporcionado por el proyecto MvcContrib):

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); SimplyRestfulRouteHandler.BuildRoutes(routes); routes.MapRoute( "Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );

Cualquier sugerencia sería recibida greyy ya que agotó todas las opciones por el tiempo que tengo ahora.

Muchas gracias.


Desafortunadamente, IIS 6 necesita una extensión de archivo para asignar la solicitud al manejador de la derecha, lo que significa que tendrá que usar el sufijo .mvc en los nombres de su controlador, como /{controller}.mvc/{action}

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); SimplyRestfulRouteHandler.BuildRoutes(routes); routes.MapRoute( "Default", "{controller}.mvc/{action}/{id}", new { controller = "Home", action = "Index", id = "" } );

Sin embargo, existen formas de evitar esto dependiendo de su nivel de control en el servidor IIS 6. Por favor refiérase a las siguientes páginas para más información


Esto es lo que hice para obtener URLs sin extensión que funcionen con IIS 6 y ASP.NET MVC Beta 1.

  • Cree un proyecto ASP.NET MVC Beta predeterminado y compílelo.
  • Cree un nuevo sitio web de IIS que apunte al directorio de la aplicación.
  • En las propiedades de IIS para el sitio web, haga clic en la pestaña DirectorioInicio.
  • Haga clic en el botón "Configuración ...". En la pestaña "Asignaciones", haga clic en "Insertar ..."
  • Al lado de la etiqueta "Mapas de la aplicación comodín" En el cuadro de texto, escriba "c: / windows / microsoft.net / framework / v2.0.50727 / aspnet_isapi.dll"
  • Desmarque la casilla "Verificar que el archivo exista" Haga clic en Aceptar
  • Navega a / home ¡Funcionó!

No debería necesitar cambiar web.config en absoluto. Solo necesita asignar todas las solicitudes a IIS a ASP.NET Isapi dll de lo contrario ASP.NET nunca obtendrá esas solicitudes.


OK, funcionó.

El problema era que estaba usando la automatización de msbuild para empaquetar los archivos que necesitaba implementar, y me faltaba global.asax.

Entonces, parece que si global.asax no se implementa en el sitio, ninguna de las rutas se conecta. Esto significa que al llegar a la raíz del sitio web correctamente se produce el error "La solicitud entrante no coincide con ninguna ruta" y cualquier otra solicitud ya no se enruta a las clases de controlador, por lo que se genera un 404.

HTH.