我有以下代碼檢查異常,如果它是404異常,它將檢查一個URL列表以查看頁面是否已被移動,如果匹配,將發出永久重定向新頁面:Does Response.RedirectPermanent();處理代碼後調用
protected void Application_Error(object sender, EventArgs e)
{
var exception = Server.GetLastError();
if (exception != null)
{
if (exception is HttpException)
{
TryRedirect((HttpException)exception);
}
LogError(exception);
}
}
private void TryRedirect(HttpException httpException)
{
if (httpException.GetHttpCode() == 404)
{
WebsiteRedirect redirect = SiteCache.Redirects.FirstOrDefault(x => string.Compare(x.LegacyURL, HttpContext.Current.Request.RawUrl, true) == 0);
if (redirect != null)
{
// 301 it to the new url
Response.RedirectPermanent(redirect.NewURL);
}
}
}
現在,我會想到的是,重定向發生後,該代碼的非後它會被執行即LogError
功能不會被調用。但它似乎是因爲我得到的錯誤信息找不到網頁。
是對MVC Response.RedirectPermanent
這個標準的行爲嗎?
那麼,爲什麼LOGERROR函數被調用的響應在RedirectPermanent之後? – Pete
它永久重定向,即你是不是會得到控制,從那裏你叫 – Nadendla
這是完全錯誤已經進一步讀入'RedirectPermanent'後面的請求時,它會繼續,除非你告訴它不處理響應 - 它需要一個如果將其設置爲true,將會終止當前響應。如果設置爲false,它將完成當前的響應。默認設置爲false – Pete