C# MVC 모드 404 500 페이지 설정 방법

8560 단어 mvc
<customErrors mode="On" defaultRedirect="Controllers/Action">
<error statusCode="403" redirect="Controllers/Action" /> <error statusCode="404" redirect="Controllers/Action" /> </customErrors> Controllers Action

 
방법 2:
protected void Application_EndRequest()
{
        var statusCode = Context.Response.StatusCode;
        var routingData = Context.Request.RequestContext.RouteData;
        if (statusCode == 404 || statusCode == 500)
        {
           Response.Clear();
           var area = DataHelper.ConvertTo(routingData.DataTokens["area"], string.Empty);
           if (area == "Admin")
           {
                Response.RedirectToRoute("Admin_Default", new { controller = "BackError", action = "NotFound", IsReload = 1 });
           }
           else
           {
                Response.RedirectToRoute("Default", new { controller = "Error", action = "NotFound", id = UrlParameter.Optional });
           }

       }
}

 
 
방법 3:
Global.aspx.cs
public static void RegisterGlobalFilters(GlobalFilterCollection filters)  
{  
    filters.Add(new CustomHandlerErrorAttribute());  
}  

 
CustomHandlerErrorAttribute.cs
public class CustomHandlerErrorAttribute : HandleErrorAttribute  
{  
    public override void OnException(ExceptionContext filterContext)  
    {  
        if (filterContext.ExceptionHandled)  
        {  
            return;  
        }  
  
        filterContext.Controller.ViewData.Model = filterContext.Exception;  
  
        filterContext.Result = new ViewResult   
        {   
            ViewName = "Error",   
            ViewData = filterContext.Controller.ViewData   
        };  
  
        filterContext.ExceptionHandled = true;  
    }  
}  

 
web.config 
<customErrors mode="On">  
  <error redirect="/home/error" statusCode="404" />  
</customErrors>  

 
web.config  
<httpErrors errorMode="Custom" existingResponse="PassThrough">  
</httpErrors>  

 
Error.cshtml
<div class="box">  
    @{  
        
        var exception = ViewData.Model;  
        var statusCode = exception == null ? 404 : 500;  
        Response.StatusCode = statusCode;  
        if (statusCode == 404)  
        {  
            <h3>404 Page not found!</h3>  
            <p> !</p>  
        }  
        else if (statusCode == 500)  
        {  
            <h3>500  </h3>  
            <p>@exception.Message</p>  
        }  
    }  
    <p style="font-size: 12px; color: Gray"> !</p>  
</div>  

좋은 웹페이지 즐겨찾기