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 de tilde (~) incrustada en los elementos del Protocolo de transferencia de hipertexto (HTTP) en Páginas web Desinscritura V3 se asigna a las direcciones URL originales mediante la reescritura de la dirección URL de Internet Information Services (IIS).
Versión del producto original: ASP.NET
Número KB original: 2905164
Síntomas
En Microsoft ASP.NET Web Pages Razor V3, la notación de tilde (~) incrustada en los elementos HTML, como , o se asigna a las direcciones URL originales mediante la reescritura de la dirección URL de <A/> <SCRIPT/> <LINK/> IIS. Por ejemplo, cuando las solicitudes debajo se reescriban en la dirección URL en , el asp.net/content atributo en se resuelve en en lugar de en asp.net href <A href='~/content/'/> /content/content/ / . Por lo tanto, es posible que las páginas de Páginas web de Razor V2 no funcionen correctamente después de actualizar a Páginas web Desa prueba 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 páginas web de Razor V3 para que sea coherente con ASP.NET MVC. En ASP.NET MVC, la notación de tilde en el método o el método produce las direcciones URL originales independientemente de las reglas de reescritura de Url.Content direcciones URL de Html.ActionLink IIS.
Sin embargo, en Páginas web, la notación de tilde en 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 debajo se reescriban en la dirección URL en content.asp.net , el atributo in se resuelve en asp.net/content/ href <A href='~/book/'/> /content/book/ . En Páginas web Desenlaz v3, el mismo atributo se href traduce en , que es la dirección URL original en el /book/ explorador.
Solución
Para resolver la notación de tilde en las direcciones URL reescritas mediante el mismo comportamiento que en Páginas web Desa herramientas V2, establezca el contexto en false en cada página web o en IIS_WasUrlRewritten 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 contexto afecta a la notación de tilde no solo en los elementos IIS_WasUrlRewritten 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 devuelve las direcciones URL Html.ActionLink 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: