0

У меня есть установка Web.config следующим образом, чтобы отображать пользовательские страницы ошибок 403, но по какой-либо причине страница не отображается - я по-прежнему получаю страницу с ошибками по умолчанию! Пользовательские страницы правильно показано 404 который использует тот же ErrorControllerСтраница ошибки 403 в MVC4 не отображается

Web.Config

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

ErrorController

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); 
     } 
    } 
} 
+0

не Если ваш 'Forbidden' функция будет возвращение' ActionResult' и не 'ViewResult'? – vee

+0

Функция даже не попадает! – Chris

+0

Итак, ваш 'filterContext.HttpContext.Request.IsAuthenticated' является проблемой здесь, может быть проверка' filterContext.HttpContext.User.Identity' перед 'if', чтобы получить больше подсказок? – vee

ответ

0
<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 в корневой директории "Error"

 <%@ 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> 
Смежные вопросы