MVC网站的global.asax中的Application_Start方法里,有这样一段代码:

  1. public class MvcApplication : System.Web.HttpApplication
  2. {
  3. protected void Application_Start()
  4. {
  5. AreaRegistration.RegisterAllAreas();
  6. FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
  7. RouteConfig.RegisterRoutes(RouteTable.Routes);
  8. BundleConfig.RegisterBundles(BundleTable.Bundles);
  9. }
  10. }

一、禁用显示头信息:

在global.asax中的Application_Start方法里添加如下代码:

  1. MvcHandler.DisableMvcResponseHeader = true;

另外添加如下方法:

  1.     /// <summary>
  2. /// 移除响应头部信息
  3. /// </summary>
  4. protected void Application_PreSendRequestHeaders()
  5. {
  6. Response.Headers.Remove("Server"); //Remove Server Header
  7. Response.Headers.Remove("X-AspNet-Version"); //Remove X-AspNet-Version Header
  8. }

二、添加全局异常处理:

1、定义异常处理类,继承HandleErrorAttribute:

  1. public class ExceptionLogAttribute:HandleErrorAttribute
  2. {
  3. /// <summary>
  4. /// 触发异常时调用的方法
  5. /// </summary>
  6. /// <param name="filterContext"></param>
  7. public override void OnException(ExceptionContext filterContext)
  8. {
  9. string message = string.Format("消息类型:{0}<br>消息内容:{1}<br>引发异常的方法:{2}<br>引发异常的对象:{3}。"
  10. , filterContext.Exception.GetType().Name
  11. , filterContext.Exception.Message
  12. , filterContext.Exception.TargetSite
  13. , filterContext.Exception.Source);
  14. //登录用户
  15. var loginUserId = Guid.Empty;
  16. var loginInfo = filterContext.HttpContext.Session["userMdl"] as ViewModel.t_User_VModel;
  17. if (loginInfo != null)
  18. {
  19. loginUserId = loginInfo.UserId;
  20. }
  21.  
  22. var model=new JiaSoftOTOSystem.ViewModel.t_ExceptionLog_VModel{
  23. ExceptionId=Guid.NewGuid(),
  24. Title = filterContext.RouteData.GetRequiredString("controller")+"/"+filterContext.RouteData.GetRequiredString("action"),
  25. Messge = message,
  26. CreationTime=DateTime.Now,
  27. CreatedByUserId = loginUserId
  28. };
  29.  
  30. //将 ex 错误对象记录到日志
  31. new JiaSoftOTOSystem.BLL.t_ExceptionLog_BLL().Add(model);
  32.  
  33. base.OnException(filterContext);
  34. }
  35. }

2、然后在global.asax中的Application_Start方法里注册事件 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters)中添加全局异常处理类的注册:

  1. public class FilterConfig
  2. {
  3. public static void RegisterGlobalFilters(GlobalFilterCollection filters)
  4. {
  5. // 自定义异常类,继承自HandleError,将异常信息写入日志
  6. filters.Add(new ExceptionLogAttribute());
  7. //默认的异常记录类
  8. filters.Add(new HandleErrorAttribute());
  9. }
  10. }

全局异常处理添加完毕。

MVC 全局异常处理及禁用显示头的更多相关文章

  1. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  2. .NET MVC全局异常处理(一)

    目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关的配置,但没有实际做过,以为改下设定就 ...

  3. .NET MVC全局异常处理(二)

    目录 .NET MVC全局异常处理(二) MVC过滤器Filter .NET MVC全局异常处理(二) 对上节的内容进行了补充 MVC过滤器Filter MVC有四种过滤器:Authorization ...

  4. Spring MVC 全局异常处理&文件上传

    Spring MVC 全局异常处理 使用SimpleMappingExceptionResolver实现异常处理 在welcome-servlet.xml进行如下配置: <bean class= ...

  5. Spring MVC全局异常处理与拦截器校检

    在使用Spring MVC进行开发时,总是要对系统异常和用户的异常行为进行处理,以提供给用户友好的提示,也可以提高系统的安全性. 拦截系统响应错误 首先是拦截系统响应错误,这个可以在web.xml中配 ...

  6. MVC 全局异常处理(适用多人操作)

    自定义特性: using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sy ...

  7. Spring MVC全局异常处理

    继承HandlerExceptionResolver接口实现自己的处理方法,如: public class MyHandlerExceptionResolver implements HandlerE ...

  8. spring mvc 全局异常处理

    package com.tool; public class MyException extends Exception{ public String Msg; public String ErrCo ...

  9. Spring MVC全局异常后返回JSON异常数据

    问题: 当前项目是作为手机APP后台支持,使用spring mvc + mybaits + shiro进行开发.后台服务与手机端交互是发送JSON数据.如果后台发生异常,会直接返回异常页面,显示异常内 ...

随机推荐

  1. JsTree

    一.JStree的简单介绍 1.关于jstree jsTree 使用了 jQuery 和 Sarissa,是一个是免费的但是设置灵活的,基于 JavaScript 跨浏览器支持的网页树形部件. jsT ...

  2. linux下mysql函数的详细案列

    MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *pas ...

  3. Copy List with Random Pointer [LeetCode]

    A linked list is given such that each node contains an additional random pointer which could point t ...

  4. CentOS7下安装MYSQL5.7

    第一种方式:yum安装 1.下载mysql57-community-release-el7-9.noarch 下载地址:http://dev.mysql.com/downloads/repo/yum/

  5. Octopus系列之代码备份

    代码 $.extend($.validator.messages, { required: "This field is required.", remote: "Ple ...

  6. win8平台下Ruby on Rails的第一个web应用

    最近在做一个网站web前端的前期开发,老板要求用Ruby on Rails搭建部署开发环境,上网搜之,发现整个搭建流程比较坑爹,于是用了一款集成软件Bitnami Ruby Stack一键安装到我的w ...

  7. iOS开发Swift篇—(七)函数(1)

    iOS开发Swift篇—(七)函数 一.函数的定义 (1)函数的定义格式 func 函数名(形参列表) -> 返回值类型 { // 函数体... } (2)形参列表的格式 形参名1: 形参类型1 ...

  8. Jenkins+Jmeter+Ant 接口持续集成(转)

    来源:https://testerhome.com/topics/5186 为什么要用Jmeter做接口测试 当选择这套方案的时候,很多人会问,为什么选择Jmeter做Case管理?为什么不自己写框架 ...

  9. MFC学习笔记(一)向模态对话框传递数据

    声明构造函数为2个参数,具有默认参数的参数须放在后面. CDialogDimmer::CDialogDimmer(CString name,CWnd* pParent /*=NULL*/) : CDi ...

  10. 三部曲一(数据结构)-1011-Sorting It All Out

    每次加入一个关系都要进行拓扑排序,不过在排序过程中需要判断是否出现多个入度为0的点,如果出现了就说明不能确定大小关系.不论出不出现多个入度为0的点拓扑排序都要进行到最后来判断是否出现环,因为一旦出现环 ...