重定向(“/Error/UnAuthorized”)在ASP.NET MVC中不起作用
本文关键字:NET ASP MVC 不起作用 Error UnAuthorized 重定向 | 更新日期: 2023-09-27 17:57:40
有人能帮我为什么下面的代码不起作用吗?调试时未发生重定向:
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
Redirect("/Error/UnAuthorized");
}
以下内容应该有效:
protected override void Initialize(RequestContext requestContext)
{
base.Initialize(requestContext);
var url = Url.Action("UnAuthorized", "Error");
requestContext.HttpContext.Response.Redirect(url);
}
话虽如此,您不应该在Initialize
方法中执行任何重定向。就我个人而言,我从未想过要推翻这种方法。更糟糕的是,你似乎在用这种方法处理授权,这很糟糕。我强烈建议您为此使用自定义的Authorize属性。
在MVC中,您应该返回重定向结果,而不是使用Response.redirect.
此外,我想说的是,由于您收到的错误(发送了标头),您在请求中处理得太晚了。
下面是一个从操作方法重定向的示例。
[HttpGet]
public ActionResult Basecamp()
{
if (!GetPlanPolicyForUser().IntegrationEnabled)
{
Log<ApplicationsController>.Action( "..." );
return Redirect("/applications/notsupported");
}
//...
}