WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
随笔 - 1079, 文章 - 1, 评论 - 75, 阅读 - 174万
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

C# MVC模式 404 500页面设置方法

Posted on   WebEnh  阅读(2139)  评论(0编辑  收藏  举报
<customErrors mode="On" defaultRedirect="Controllers/Action">
<error statusCode="403" redirect="Controllers/Action" /> <error statusCode="404" redirect="Controllers/Action" /> </customErrors> 这里不是对应你想转到的页面而是你所想跳转的某个Controllers 中的某个Action

 

方法二:

复制代码
复制代码
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 });
           }

       }
}
复制代码
复制代码

 

 

方法三:

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 <system.web>

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

 

web.config  <system.webServer>

<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>  
复制代码
复制代码

 

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示

喜欢请打赏

扫描二维码打赏

了解更多