2
我在我的MVC Web應用程序的Global.asax中下面的代碼:創建過濾器,以確保小寫的網址
/// <summary>
/// Handles the BeginRequest event of the Application control.
/// </summary>
/// <param name="sender">The source of the event.</param>
/// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
protected void Application_BeginRequest(object sender, EventArgs e)
{
// ensure that all url's are of the lowercase nature for seo
string url = Request.Url.ToString();
if (Request.HttpMethod == "GET" && Regex.Match(url, "[A-Z]").Success)
{
Response.RedirectPermanent(url.ToLower(CultureInfo.CurrentCulture), true);
}
}
什麼,這達到是爲了確保所有的URL訪問該網站是小寫。我想遵循MVC模式並將其移至可應用於所有過濾器的全局過濾器。
這是正確的方法嗎?而且我將如何爲上面的代碼創建一個過濾器?
沒有什麼內在的錯誤離開你的代碼在'BeginRequest'方法。但是,要回答您的問題,請執行以下操作:如您所知,將代碼移至過濾器,然後創建(如果尚未擁有),則使用新過濾器修飾(最好是抽象的)BasePageController。這樣你的過濾器將在繼承自你的基礎的控制器類中的所有Action方法上執行。另一種選擇是使用相同的代碼創建一個HttpHandler。這樣做的好處是處理程序在請求生命週期中較早執行,並且應該會產生更好的性能。 – Bryan
可能的重複[如何確保POST上的小寫URL?](http://stackoverflow.com/questions/4349588/how-do-i-ensure-lower-case-urls-on-post) – Toto