重定向(“/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");
}

重定向(“/Error/UnAuthorized”)在ASP.NET MVC中不起作用

以下内容应该有效:

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");
    }
    //...
}