c# - MVC4中的自定义403错误页面未显示

标签 c# asp.net-mvc error-handling http-status-code-403 custom-error-pages

我已经按照以下方式设置了Web.config,以显示自定义403错误页面,但是由于某种原因,该页面未显示-我仍然会获得默认错误页面!正确显示了使用相同404ErrorController的自定义页面

Web配置

<customErrors mode="On" defaultRedirect="~/Error">
  <error redirect="~/Error/NotFound" statusCode="404" />
  <error redirect="~/Error/Forbidden" statusCode="403"  />
</customErrors>

错误 Controller
public class ErrorController : BaseController
{
    public ViewResult Forbidden()
    {
        Response.StatusCode = 403;  //you may want to set this to 200
        return View("Error403");
    }
}

生成403的属性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = true)]
public class AuthorizeEMAttribute : System.Web.Mvc.AuthorizeAttribute
{
    protected override void HandleUnauthorizedRequest(System.Web.Mvc.AuthorizationContext filterContext)
    {
        if (filterContext.HttpContext.Request.IsAuthenticated)
        {
            filterContext.Result = new System.Web.Mvc.HttpStatusCodeResult((int)System.Net.HttpStatusCode.Forbidden);
        }
        else
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
    }
}

最佳答案

 <customErrors mode="On" defaultRedirect="~/Error/Error.html" redirectMode="ResponseRewrite">
      <error redirect="~/Error/403.aspx" statusCode="403" />
      <error redirect="~/Error/404.aspx" statusCode="404" />
      <error redirect="~/Error/500.html" statusCode="500" />
    </customErrors>

在根目录“错误”中创建​​页面403.aspx
     <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>

<!DOCTYPE html>

<html>
<head runat="server">
    <meta name="viewport" content="width=device-width" />
    <title>403 Not Found</title>
</head>
<body>
    <%
    Server.ClearError();
Response.Status = "403 - Forbidden: Access is denied.";
Response.StatusCode = 403;
         %>
    <div>
    <h2>403 - Forbidden: Access is denied.</h2>
    </div>
</body>
</html>

关于c# - MVC4中的自定义403错误页面未显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652795/

相关文章:

c# - 如何将采用派生类型参数的委托(delegate)转换为具有基本类型参​​数的委托(delegate)?

c# - 调度程序与多线程

c# - ActiveDirectory PrimaryContext 出现未知错误 (0x5011)

vba - Visual Basic编辑器中Excel格式的电子邮件字段中的错误处理

android - 资源链接失败/Android Studio College Project

c# - WPF FontFamily格式问题

asp.net-mvc - 无法将 App_Data 中的 .mdf/.ldf checkin TFS

javascript - 无法在mvc中的angular js bootstrap中使用超时

r - Boxplot中的图边距为大(带有可复制代码)

c# - 如何使用嵌套客户端在 Elasticsearch 中按数组搜索数组属性