我已經創建了自己的控制器,其中我正在檢查每個請求,如果會話存在執行操作,否則重定向用戶登錄。控制器的單個實例不能用於處理多個請求
這裏是我的代碼:
public class DefaultController : Controller
{
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session["User"] == null)
{
filterContext.Result = RedirectToAction("Login", "Account");
}
else
{
base.Execute(filterContext.RequestContext);
}
}
}
,我在我的控制器使用它:
public class HomeController : DefaultController
{
public ActionResult Index()
{
// DXCOMMENT: Pass a data model for GridView
return View();
}
}
,當我去首頁/指數它是根據重定向我LO-杜松子酒邏輯,但如果使用已經登錄(會話存在)它拋出異常,而不是執行該操作。
這裏是例外:
控制器的單個實例不能被用於處理多個請求。如果自定義控制器工廠正在使用中,請確保它爲每個請求創建控制器的新實例。
您可以使用async await在其自己的線程中執行每個動作。如果您擁有最新的VS和.NET,請嘗試添加新的MVC/WebAPI項目,新的示例項目默認使用async/await。希望有所幫助。 – Brunis
您應該在過濾器中編寫邏輯。 –
@KhanhTO在這種情況下,我將不得不爲每個操作明確地修飾會話檢查,我需要更通用的,所以我這樣做 –