Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem tilde (~) Notation eingebettet in Hypertext Transfer Protocol (HTTP)-Elemente in Webseiten Razor V3 den ursprünglichen URLs zugeordnet ist, indem sie die URL-Umschreibung Internetinformationsdienste (IIS) verwenden.
Ursprüngliche Produktversion: ASP.NET
Ursprüngliche KB-Nummer: 2905164
Problembeschreibung
In Microsoft ASP.NET Webseiten Razor V3 wird die Tilde-Notation (~) in die HTML-Elemente wie , z <A/>
. B. , <SCRIPT/>
oder <LINK/>
die ursprünglichen URLs mithilfe der IIS-URL neu geschrieben. Wenn z. B. die anforderungen unter asp.net/content
der URL asp.net
umgeschrieben werden, wird das href
Attribut <A href='~/content/'/>
in anstelle von "In" /
aufgelöst/content/content/
. Daher funktionieren die Seiten auf Webseiten Razor V2 nach dem Upgrade auf Webseiten Razor V3 oder ASP.NET Model-View-Controller (MVC) 5 möglicherweise nicht ordnungsgemäß.
Ursache
Dieses Problem tritt auf, da das Verhalten der Tildenotation in URLs in Webseiten Razor V3 zur Konsistenz mit ASP.NET MVC geändert wird. In ASP.NET MVC erzeugt die Tildenotation in der Url.Content
Methode oder die Html.ActionLink
Methode die ursprünglichen URLs, unabhängig von den REGELN zum Umschreiben der IIS-URL.
In Webseiten Razor V2 ist die Tildenotation in URLs jedoch den neu geschriebenen URLs zugeordnet, wenn das IIS-URL-Umschreibenmodul aktiviert ist. Wenn z. B. die anforderungen unter content.asp.net
der URL asp.net/content/
umgeschrieben werden, wird das href
Attribut <A href='~/book/'/>
in aufgelöst in /content/book/
. In Webseiten Razor V3 wird dasselbe href
Attribut übersetzt, in das die ursprüngliche URL im Browser übersetzt /book/
wird.
Lösung
Um die Tildenotation mit den neu geschriebenen URLs zu beheben, indem Sie dasselbe Verhalten wie in Webseiten Razor V2 verwenden, legen Sie den IIS_WasUrlRewritten
Kontext auf "false " in jeder Webseite oder in Application_BeginRequest
" Global.asax " für die globale Einstellung wie folgt fest:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items["IIS_WasUrlRewritten"] = false;
}
Notiz
Die Änderung des IIS_WasUrlRewritten
Kontexts wirkt sich nicht nur auf die Tildenotation in den HTML-Elementen, sondern auch auf die MVC helper
Methoden aus. Wenn sie beispielsweise auf "false" festgelegt ist, gibt die Tildenotation in Url.Content
und Html.ActionLink
gibt die umgeschriebenen URLs zurück.
Weitere Informationen
Weitere Informationen zur Razor-Syntax und zu einigen verwandten MVC-Methoden, gehen Sie zu den folgenden Websites: