c# - usar - rewrite url iis 7 example
Utilizar un reescritura de URL personalizado, IIS6 y URL con.htm,.html, etc. (3)
Creo que si haces que IIS envíe todas las solicitudes a .NET y a tu controlador, entonces tu controlador deberá detectar si la página existe y servirla en lugar de reescribirla.
UrlRewriting.NET tiene una opción para hacer esto: es posible que desee ver su código para ver cómo están manejando este caso.
Tengo un sitio personalizado que estoy compilando con la reescritura automática de URL usando un motor personalizado. La reescritura funciona bien siempre que la url de la página no termine en alguna como .htm o .html. Para estas páginas va directamente a la página iis 404 en lugar de presionar mi motor de reescritura primero.
Tengo el * controlador de comodines en la sección "Directorio de inicio" de la configuración de IIS6 de ese sitio web, pero estos URL parecen ser ignorados por él (aunque cosas como css, jpg, js, etc. se envían al controlador de url en mi web proyecto). ¿Cómo configuro IIS6 para obligar a estas URL a enviarse al controlador, mientras todavía se sirve la página si existe normalmente?
El controlador básicamente hace esto
if (!File.Exists(Request.Path))
{
doMyRewriting();
}
Tengo que suponer que usar un bloque como este (solo y por ejemplo, el real hace algunas otras cosas para formatear el Request.Path para que sea correcto con todo) debe ejecutar el "doMyRewriting ()" si el archivo solicitado no existe de otra manera servirá la página normalmente. ¿Estoy equivocado?
Si le digo específicamente a IIS que envíe las páginas .htm y .html al controlador .NET, la reescritura funciona, pero si la página está realmente allí, no la publicará.
Cualquier ayuda sería muy apreciada.
¡Gracias por adelantado!
No sé si puede o quisiera hacer esto, pero existe la reescritura de Ionics Isapi url que puede usar.
Básicamente, instálelo y luego configure una regla para eliminar el .html de la misma manera que golpea su motor de reescritura. Lo uso en IIS 6 con varios de mis blogs.
En mi opinión, la reescritura de URL con IIS 6 se maneja mejor con un filtro ISAPI escrito como código nativo no administrado. De lo contrario, se encontrará con los problemas que ha mencionado: tener que asignar todas las extensiones a ASP.Net y perder la capacidad de manejar archivos de manera sencilla. Con un filtro ISAPI, puede optar por no reescribir algunas URL y dejar que IIS las maneje de forma normal.
Para comenzar, sugiero leer la Descripción general del filtro ISAPI en MSDN.
Si su filtro necesita absolutamente el tiempo de ejecución de .Net framework, es posible escribir un pequeño shell de filtro ISAPI que aloja el CLR y reenvía las solicitudes a algún código administrado. El Framework Filter.Net toma este enfoque y puede ser adecuado para sus necesidades. El inconveniente de este enfoque radica en que deberá utilizar la misma versión .Net que cualquier aplicación ASP.Net que se ejecute en el proceso IIS principal.