我們有一段代碼檢測舊的URL並執行如下的重定向:302重定向仍然試圖運行原始請求
Response.Clear();
Response.StatusCode = 301;
Response.Status = "301 Moved Permanently";
try
{
Response.AddHeader("Location", MyLink.GetFullPath());
} catch
{
Response.StatusCode = 302;
Response.Status = "302 Moved Temporarily";
Response.AddHeader("Location", "/");
}
Response.End();
什麼本質上發生的事情是,有在301永久重定向的嘗試如果不成功,則將「302 Moved Temporarily」移動到默認主頁。
問題:我遇到的問題如下。如果輸入一個URL(比如說「/ product/ABC123」)。 URL 301重定向失敗,並執行catch中的302重定向,但原始URL(「/ product/ABC123」)仍在後臺執行。當我在調試器中運行網站時,302重定向工作正常,並且默認主頁出現,然後半秒鐘後執行補充頁面,並且由於原始URL爲「否」而出現服務器500錯誤更長的可接受。
我的問題如下:我怎樣才能完全停止原始請求,並讓302重定向做它需要做的事情。我試過「HttpContext.ApplicationInstance.CompleteRequest();」在「Response.End()」之下,但它並未停止原始請求。
編輯:重定向代碼正在從Controller類的Index方法中執行。
我認爲這是相當有意義的,你試圖執行這段代碼。這是global.asax中的事件,這是一個控制器操作,一個過濾器,一個http處理程序? –
@Tz_很好,我會編輯帖子 –