Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makale, Web Sayfaları Razor V3'teki Köprü Metni Aktarım Protokolü (HTTP) öğelerine eklenmiş tilde (~) gösteriminin Internet Information Services (IIS) URL'sini yeniden yazarak özgün URL'lerle eşlenmesi sorununu çözmenize yardımcı olur.
Özgün ürün sürümü: ASP.NET
Özgün KB numarası: 2905164
Belirtiler
Microsoft ASP.NET Web Sayfaları Razor V3'te, , gibi <A/>
<SCRIPT/>
HTML öğelerine eklenmiş tilde (~) gösterimi veya <LINK/>
IIS URL yeniden yazma özelliğini kullanarak özgün URL'lerle eşleyin. Örneğin, altındaki istekler altındaki asp.net
URL'ye yeniden yazıldığında içindeki href
özniteliği <A href='~/content/'/>
yerine olarak çözümlenir /content/content/
/
.asp.net/content
Bu nedenle, Web Sayfaları Razor V2'deki sayfalar, Web Sayfaları Razor V3 veya ASP.NET Model-View-Controller (MVC) 5'e yükseltildikten sonra düzgün çalışmayabilir.
Neden
Bu sorun, URL'lerdeki tilde gösteriminin davranışı, ASP.NET MVC ile tutarlılık için Web Sayfaları Razor V3'te değiştirildiğinden oluşur. ASP.NET MVC'de, yöntem veya Html.ActionLink
yöntemdeki Url.Content
tilde gösterimi, IIS URL yeniden yazma kurallarından bağımsız olarak özgün URL'leri üretir.
Ancak Web Sayfaları Razor V2'de, IIS URL yeniden yazma modülü etkinleştirildiğinde URL'lerdeki tilde gösterimi yeniden yazılan URL'lerle eşler. Örneğin, altındaki content.asp.net
istekler altındaki asp.net/content/
URL'ye yeniden yazıldığında içindeki href
özniteliği <A href='~/book/'/>
olarak /content/book/
çözümlenir. Web Sayfaları Razor V3'te aynı href
öznitelik, tarayıcıdaki özgün URL olan öğesine çevrilir /book/
.
Çözüm
Web Sayfaları Razor V2'dekiyle aynı davranışı kullanarak yeniden yazılan URL'lere yönelik tilde gösterimini çözmek için, bağlamı her Web sayfasında veya genel ayar için Global.asax içinde Application_BeginRequest
aşağıdaki gibi false olarak ayarlayınIIS_WasUrlRewritten
:
protected void Application_BeginRequest(object sender, EventArgs e)
{
Context.Items["IIS_WasUrlRewritten"] = false;
}
Not
Bağlam değişikliği IIS_WasUrlRewritten
, yalnızca HTML öğelerinde değil, aynı zamanda yöntemlerde de tilde gösterimini MVC helper
etkiler. Örneğin false olarak ayarlanırsa içindeki tilde gösterimi Url.Content
ve Html.ActionLink
yeniden yazılan URL'leri döndürür.
Daha Fazla Bilgi
Razor söz dizimi ve ilgili bazı MVC yöntemleri hakkında daha fazla bilgi için aşağıdaki web sitelerine gidin: