Eliminar la barra inclinada final en ASP.NET MVC 4 Ruta a la raíz de la aplicación

En mi aplicación ASP.NET MVC 4 RouteConfig archivo, he registrado la siguiente ruta por defecto:

routes.MapRoute("Default", "{controller}/{action}/{id}",
    new { controller = "home", action = "index", id = UrlParameter.Optional });

Ahora, en mis vistas de Razor, quiero generar una URL a la raíz de mi aplicación así:

<a href="@Url.Action("index", "home")">Home</a>

La URL generada incluye una barra inclinada al final; al hacer clic en el enlace se abre la página host local/nombre de aplicación IISA/. Sin embargo, quiero que la URL no contenga la barra diagonal final para que la URL sea host local/nombre de aplicación IISA. Generar rutas para otras acciones, como /Cuenta de Ingreso, no crea direcciones URL con barras inclinadas al final, solo se trata de la ruta que se vincula a la raíz de mi aplicación.

¿Hay alguna forma de evitar que el enrutamiento ASP.NET MVC agregue la barra inclinada final a la ruta anterior?

(Sé que puedo redirigir desde la URL que incluye la barra oblicua a la que no la tiene, pero prefiero que el enrutamiento genere la URL de ruta correcta en primer lugar).

preguntado el 04 de julio de 12 a las 09:07

No puedo duplicar tu problema que uso Default route y va a url sin / -

solo como información, ¿cuál es el problema con la barra inclinada final? -

@alexanderb 1) Ambos enlaces terminan mostrando la misma página a pesar de tener URL ligeramente diferentes. No es bueno... 2) Es feo ;-). -

Creo que uno podría ser útil: net.tutsplus.com/tutorials/… -

2 Respuestas

Recomiendo las reglas de URL Rwrite Outbounds.

Creación de reglas de salida para el módulo de reescritura de URL: Módulo de reescritura de URL 2: Módulo de reescritura de URL: El sitio oficial de Microsoft IIS

Configuración de muestra:

    <rewrite>
        <outboundRules>
            <rule name="RewriteSlash">
                <match filterByTags="A" pattern="^/IISApplicationName/$" />
                <action type="Rewrite" value="/IISApplicationName" />
            </rule>
        </outboundRules>
    </rewrite>

Respondido 04 Jul 12, 14:07

¿Hay alguna forma de evitar que el enrutamiento ASP.NET MVC agregue la barra inclinada final a la ruta anterior?

Debe pasar una barra inclinada final cuando la ruta relativa esté vacía. Si de alguna manera genera enlaces con href localhost/IISApplicationName aún así, el navegador agrega un "/" al final (puede verificar esto fácilmente en firebug, simplemente escriba http://stackoverflow.com en la barra de direcciones del navegador y verifique la pestaña de solicitudes, puede ver el final "/").

Esto se debe a que según HTTP/1.1,

la ruta absoluta no puede estar vacía; si no hay ninguno presente en el URI original, debe darse como "/" (la raíz del servidor).

http://www.faqs.org/rfcs/rfc2616.html#ixzz0kGcaRbqU (sección 5.1.2)

Respondido 04 Jul 12, 12:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.