Pregunta

Estaba planeando utilizar el enrutamiento de URL para una aplicación de formularios web.Pero, después de leer algunos publicaciones, No estoy seguro de que sea un enfoque fácil.

¿Es mejor utilizar el Módulo de reescritura de URL para formularios web?Pero es sólo para IIS7.Inicialmente, hubo algunos rumores de que el enrutamiento de URL está totalmente desacoplado de Asp.Net MVC y podría usarse para formularios web.

Me encantaría escuchar alguna sugerencia.

¿Fue útil?

Solución

Hay una gran publicación aquí sobre las diferencias entre los dos de un miembro del equipo de IIS.

Una advertencia que recomendaría es que, en el caso de WebForms, hay que tener cuidado al utilizar el enrutamiento.He escrito una implementación de muestra de cómo usarías enrutamiento con WebForms que aborda estas inquietudes y, con suerte, ayuda a responder su pregunta.

Otros consejos

Este es el mejor artículo que encontré sobre este tema: Reescritura de URL de IIS y enrutamiento ASP.NET Por Ruslán Yakushev.

Reescritura de URL de IIS

Cuando un cliente realiza una solicitud al servidor web para una URL particular, el componente de reescritura de URL analiza la URL solicitada y la cambia a otra URL diferente en el mismo servidor.El componente de reescritura de URL se ejecuta muy temprano en el proceso de procesamiento de solicitudes, por lo que puede modificar la URL solicitada antes de que el servidor web tome una decisión sobre qué controlador utilizar para procesar la solicitud.

IIS URL Rewriting

Enrutamiento ASP.NET

El enrutamiento ASP.NET se implementa como un módulo de código administrado que se conecta a la canalización de procesamiento de solicitudes de IIS en la etapa Resolve Cache (evento PostResolveRequestCache) y en la etapa Map Handler (PostMapRequestHandler).El enrutamiento ASP.NET está configurado para ejecutarse para todas las solicitudes realizadas a la aplicación web.

IIS URL Routing

Diferencias entre reescritura de URL y enrutamiento ASP.NET:

  1. La reescritura de URL se utiliza para manipular rutas URL antes de que la solicitud sea manejada por el servidor web.El módulo de reescritura de URL no sabe nada acerca de qué controlador procesará finalmente la URL reescrita.Además, es posible que el controlador de solicitudes real no sepa que la URL se ha reescrito.
  2. El enrutamiento ASP.NET se utiliza para enviar una solicitud a un controlador según la ruta URL solicitada.A diferencia de la reescritura de URL, el componente de enrutamiento conoce los controladores y selecciona el controlador que debería generar una respuesta para la URL solicitada.Puede pensar en el enrutamiento ASP.NET como un mecanismo avanzado de mapeo de controladores.

Además de estas diferencias conceptuales, existen algunas diferencias funcionales entre la reescritura de URL de IIS y el enrutamiento de ASP.NET:

  1. El módulo de reescritura de URL de IIS se puede utilizar con cualquier tipo de aplicación web, que incluye ASP.NET, PHP, ASP y archivos estáticos.El enrutamiento ASP.NET sólo se puede utilizar con aplicaciones web basadas en .NET Framework.
  2. El módulo de reescritura de URL de IIS funciona de la misma manera independientemente de si se utiliza el modo de canalización de IIS integrado o clásico para el grupo de aplicaciones.Para el enrutamiento ASP.NET, es preferible utilizar el modo de canalización integrado.El enrutamiento ASP.NET puede funcionar en modo clásico, pero en ese caso las URL de la aplicación deben incluir extensiones de archivo o la aplicación debe configurarse para usar la asignación de controlador "*" en IIS.
  3. El módulo de reescritura de URL puede tomar decisiones de reescritura basadas en nombres de dominio, encabezados HTTP y variables del servidor.De forma predeterminada, el enrutamiento ASP.NET solo funciona con rutas URL y con el encabezado del método HTTP.
  4. Además de reescribir, el módulo de reescritura de URL puede realizar redirección HTTP, emitir códigos de estado personalizados y cancelar solicitudes.El enrutamiento ASP.NET no realiza esas tareas.
  5. El módulo de reescritura de URL no es extensible en su versión actual.El enrutamiento ASP.NET es totalmente extensible y personalizable.

¿Quiere que las URL formateadas sean una fábrica para generar páginas?

¿O quieres que el .aspx desaparezca?

reescribir, es para hacer que el .aspx desaparezca o simplemente para ordenar la URL.

El enrutamiento sirve para observar una solicitud y determinar qué objeto debe manejarla.Suenan similares, Phil Haack tiene algunos buenos artículos sobre el tema.

en iis6, isapiRewrite, es muy bueno

Recientemente escribí mi propio sistema de reescritura para que las URL de mis sitios se vean mejor.Básicamente, necesitarás escribir el tuyo propio. Módulo IHttp y agréguelo a su web.config para interceptar las solicitudes entrantes.Luego puede usar HttpContext.Current.RewritePath para cambiar lo que está señalando.

También querrás configurar tu sitio para usa aspnet_isapi para todo.

Descubrirá muchos pequeños problemas a lo largo del camino, como tratar de trabajar con páginas que usan "colas" (como para PageMethods), o rutas de elementos de página y devoluciones de formularios, pero los superará.

Si está interesado, puedo publicar un enlace al código y podrá comprobarlo.Ya he resuelto muchos de los problemas para que puedas leerlos a medida que avanzas.Estoy seguro de que hay muchas otras personas que también han hecho esto y que también podrían ser buenos recursos.

Quizás quieras ver mi respuesta a esta pregunta: ASP.NET: creación de su propio sistema de enrutamiento.Incluyo algunas buenas referencias para ayudarlo a construir su propio sistema de enrutamiento, ya sea usando el método de reescritura de URL o el nuevo motor de enrutamiento que puede usar y que surgió del proyecto ASP.NET MVC.

El proyecto Dynamic Data que está disponible con .Net 3.5 SP1 muestra un buen ejemplo de implementación de enrutamiento de URL.

Para reescritura de URL en IIS, IIRF Funciona en IIS5, 6, 7.Gratis.Fácil.Rápido.Fuente abierta.Soporte de expresiones regulares.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top