我想在用戶第一次加載網站時做一個簡單的重定向。 對於這一點,我只是訪問的RouteData上BaseController的BeginExecuteCore()
方法,如果URL沒有一個特定的值,那麼我會重定向到另一個https route
:MVC重定向錯誤:服務器無法在發送HTTP標頭後附加標頭
public class BaseController : Controller
{
protected override IAsyncResult BeginExecuteCore(AsyncCallback callback, object state)
{
// access route data
if (condition == true)
Response.Redirect(string.Format("https://{0}/en/en", Request.Url.Authority), true);
}
}
}
一些事實:
- 我實現我想要的結果
- 我得到異常「服務器不能在發送HTTP頭後追加頭。」
- 我試過幾種選擇:使用其他方法做重定向像
Initialize(RequestContext requestContext)
等 - 我嘗試對重定向方法使用參數
EndResponse=true
- 我試着做重定向
- 在所有之前清除頭之前的實驗我
- 我使用
MVC 5
我的問題一樣異常: 我怎樣才能以最有效的方式將用戶重定向到另一條路線,因爲我知道我需要訪問RouteData並且不會引發惱人的異常?
謝謝!
遺憾的是它沒有。我得到了同樣的例外。 以下是我所做的事(確保我沒有任何不應該的東西) 1。我適應你的方法,因爲在路上的一些變化filterContext暴露Request和Response(它的工作,我能找回我所需要的信息) 2.裝飾BaseController與[LogActionFilter] – sergiommaria
3.也試過裝飾的HomeController代替BaseController沒有成功.. 這段代碼是以前的代碼我有叫後,所以我想嘗試將用戶重定向的概率時,頁面被加載高 – sergiommaria