Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come risolvere il problema in cui la notazione tilde (~) incorporata negli elementi HTTP (Hypertext Transfer Protocol) in Pagine Web Razor V3 esegue il mapping agli URL originali usando la riscrittura dell'URL di Internet Information Services (IIS).
Versione originale del prodotto: ASP.NET
Numero KB originale: 2905164
Sintomi
In Microsoft Pagine Web ASP.NET Razor V3, la notazione tilde (~) incorporata negli elementi HTML, ad <A/>
esempio , <SCRIPT/>
o esegue <LINK/>
il mapping agli URL originali usando la riscrittura dell'URL IIS. Ad esempio, quando le richieste in asp.net/content
vengono riscritte nell'URL in asp.net
, l'attributo href
in viene risolto /content/content/
in <A href='~/content/'/>
anziché in /
. Pertanto, le pagine in Pagine Web Razor V2 potrebbero non funzionare correttamente dopo l'aggiornamento a Pagine Web Razor V3 o ASP.NET Model-View-Controller (MVC) 5.
Causa
Questo problema si verifica perché il comportamento della notazione tilde negli URL viene modificato in Pagine Web Razor V3 per coerenza con ASP.NET MVC. In ASP.NET MVC, la notazione tilde nel Url.Content
metodo o il Html.ActionLink
metodo produce gli URL originali indipendentemente dalle regole di riscrittura dell'URL IIS.
Tuttavia, in Pagine Web Razor V2, la notazione tilde negli URL viene mappata agli URL riscritti quando il modulo di riscrittura url IIS è abilitato. Ad esempio, quando le richieste in content.asp.net
vengono riscritte nell'URL in asp.net/content/
, l'attributo href
in viene risolto in <A href='~/book/'/>
/content/book/
. In Pagine Web Razor V3 lo stesso href
attributo viene convertito in /book/
, ovvero l'URL originale nel browser.
Risoluzione
Per risolvere la notazione tilde negli URL riscritti usando lo stesso comportamento di Razor V2 delle pagine Web, impostare il IIS_WasUrlRewritten
contesto su false in ogni pagina Web o in Application_BeginRequest
Global.asax per l'impostazione globale come indicato di seguito:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items["IIS_WasUrlRewritten"] = false;
}
Note
La modifica del IIS_WasUrlRewritten
contesto influisce sulla notazione tilde non solo negli elementi HTML, ma anche nei MVC helper
metodi . Ad esempio, se è impostato su false, la notazione tilde in Url.Content
e Html.ActionLink
restituisce gli URL riscritti.
Ulteriori informazioni
Per altre informazioni sulla sintassi Razor e su alcuni metodi MVC correlati, vedere i siti Web seguenti: