gpt4 book ai didi

c# - 如何在 ASP.Net MVC 3 中重定向到 ActionResult 中的路由

转载 作者:太空宇宙 更新时间:2023-11-03 22:09:24 25 4
gpt4 key购买 nike

我正在尝试创建一个访问被拒绝的 ActinoResult 以从我的 Controller 返回。我有以下实现

public class AccessDeniedResult : ActionResult
{
public override void ExecuteResult(ControllerContext context)
{
if (null != context && null != context.HttpContext && null != context.HttpContext.Response)
{
context.HttpContext.Response.StatusCode = 401;
context.HttpContext.Response.RedirectToRoute("AccessDenied");
}
}
}

这不起作用,因为来自 HttpResponseBase 的 NotImplementedException 作为 context.HttpContext.Response 传递。

如何在 MVC3 中编写正确的重定向操作结果?

最佳答案

您应该像这样返回 HttpUnauthorizedResult:

return new HttpUnauthorizedResult();

此外,您应该考虑创建一个派生自 AuthorizeAttribute 的新类来进行安全检查。然后,您可以将此指令添加到您的 web.config 以控制客户端指向的位置:

<customErrors mode="On" defaultRedirect="~/Home/Error">
<error statusCode="401" redirect="~/AccessDenied" />
</customErrors>

最后,您可以添加自定义路由来控制当用户被定向到 ~/AccessDenied 时发生的情况:

Route route = routes.MapRoute("AccessDeniedRoute", "AccessDenied", new { controller = "MyCustomErrorController", action = "My401Action" });
RouteTable.Routes.Add(route);

关于c# - 如何在 ASP.Net MVC 3 中重定向到 ActionResult 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7196867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com