Почему мой проект MVC перенаправляет на страницу ошибки 403 по умолчанию вместо той, на которую я перенаправил ее, на IIS, а не на локальную? - PullRequest
0 голосов
/ 08 июня 2018

Я установил страницу с ошибкой, которая будет перенаправляться, если возникает ошибка 403, и она работает в локальной среде, но не при развертывании в IIS, где она перенаправляет на страницу по умолчанию 403, т.е. 403 - Запрещено: доступ запрещен.

Почему?

Код:

web.config:

<system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime targetFramework="4.5"/>
    <globalization uiCulture="en" culture="en-GB"/>
    <customErrors mode="Off"></customErrors>
    <authentication mode="Forms"></authentication>
  <sessionState timeout="60"></sessionState>
  </system.web> 

C #:

CustomAuthorize:

 public class CustomeAuthorize: AuthorizeAttribute
    {
        protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
        {
            // just to ensure if the unauthorized request is from an authenticated user or a visitor.

            if (!filterContext.HttpContext.User.Identity.IsAuthenticated)   // just a visitor since he/she doesn't need any login to proceed
            {
                //filterContext.Result = new ViewResult { ViewName = "~/Views/Errors/AuthorizeFailedError.cshtml" };  
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary(new { controller = "Errors", action = "AuthorizeFailedError" }));
            }
            else //authenticated user but authorized to the requested page
            {
                filterContext.Result = new ViewResult { ViewName = "~/Views/Login/Login.cshtml" };  
            }

        }

1 Ответ

0 голосов
/ 08 июня 2018

Поскольку я новичок в этом и вижу, что мой ответ не так хорошо показан, я попробую еще раз

Я вижу, что ваши customErrors в вашем web.config не содержат каких-либо перенаправлений, так как IIS будет использовать эту попытку, добавив что-то вроде этого

<customErrors mode="Off">
  <error redirect="~/Error/Error403Page" statusCode="403" />
</customErrors>

или если у вас есть страница ошибки по умолчаниюВы хотите пойти, вы можете сделать что-то вроде этого

<customErrors mode="Off" defaultRedirect="~/Error">
  <error redirect="~/Error/Error403Page" statusCode="403" />
</customErrors>

Более подробную информацию можно найти здесь https://msdn.microsoft.com/en-us/library/h0hfz6fc(v=vs.100).aspx

...