Compartir a través de


La notación tilde se asigna a las direcciones URL originales mediante la reescritura de direcciones URL de IIS en ASP.NET Web Pages Razor V3

Este artículo le ayuda a resolver el problema en el que la notación tilde (~) insertada en elementos del Protocolo de transferencia de hipertexto (HTTP) en Páginas web Razor V3 se asigna a las direcciones URL originales mediante la reescritura de la dirección URL de Internet Information Services (IIS).

Versión original del producto: ASP.NET
Número de KB original: 2905164

Síntomas

En Microsoft ASP.NET Web Pages Razor V3, la notación tilde (~) insertada en los elementos HTML como <A/>, <SCRIPT/>o <LINK/> asignar a las direcciones URL originales mediante la reescritura de la dirección URL de IIS. Por ejemplo, cuando las solicitudes de se asp.net/content reescribirán en la dirección URL en asp.net, el href atributo de se resuelve /content/content/ en <A href='~/content/'/> en lugar de en /. Por lo tanto, es posible que las páginas de Razor V2 de Web Pages no funcionen correctamente después de actualizar a Web Pages Razor V3 o ASP.NET Model-View-Controller (MVC) 5.

Causa

Este problema se produce porque el comportamiento de la notación de tilde en las direcciones URL se cambia en Web Pages Razor V3 para mantener la coherencia con ASP.NET MVC. En ASP.NET MVC, la notación de tilde en el Url.Content método o el Html.ActionLink método genera las direcciones URL originales independientemente de las reglas de reescritura de direcciones URL de IIS.

Sin embargo, en Web Pages Razor V2, la notación de tilde en las direcciones URL se asigna a las direcciones URL reescritas cuando el módulo de reescritura de direcciones URL de IIS está habilitado. Por ejemplo, cuando las solicitudes de se content.asp.net reescribirán en la dirección URL en asp.net/content/, el href atributo de se resuelve /content/book/ en <A href='~/book/'/> . En Web Pages Razor V3, el mismo href atributo se traduce en /book/, que es la dirección URL original en el explorador.

Solución

Para resolver la notación de tilde en las direcciones URL reescritas mediante el mismo comportamiento que en Web Pages Razor V2, establezca el IIS_WasUrlRewritten contexto en false en cada página web o en Application_BeginRequest Global.asax para la configuración global de la siguiente manera:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    Context.Items["IIS_WasUrlRewritten"] = false;
}

Nota:

El cambio del IIS_WasUrlRewritten contexto afecta a la notación de tilde no solo en los elementos HTML, sino también en los MVC helper métodos . Por ejemplo, si se establece en false, la notación de tilde en Url.Content y Html.ActionLink devuelve las direcciones URL reescritas.

Más información

Para obtener más información sobre la sintaxis de Razor y sobre algunos métodos MVC relacionados, vaya a los siguientes sitios web: