问题描述
|
谁能帮我以下代码为什么不起作用?调试时不会发生重定向:
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\");
}
//...
}