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);
}
}
}
не Если ваш 'Forbidden' функция будет возвращение' ActionResult' и не 'ViewResult'? – vee
Функция даже не попадает! – Chris
Итак, ваш 'filterContext.HttpContext.Request.IsAuthenticated' является проблемой здесь, может быть проверка' filterContext.HttpContext.User.Identity' перед 'if', чтобы получить больше подсказок? – vee