Aracılığıyla paylaş


Tilde gösterimi, ASP.NET Web Sayfaları Razor V3'te IIS URL yeniden yazma özelliğini kullanarak özgün URL'lerle eşler

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.netURL'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: