Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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: