ASP.NET网站错误处理

关于错误处理

try…catch语句,有一定局限性

  1. 一般适合语句的错误处理
  2. 不适合页面不存在等问题的处理

错误处理配置

1. Web.config错误处理典型配置

在system.web节点中添加配置

<customErrors defaultRedirect="~/ErrorPage.html" mode="RemoteOnly">
      <error statusCode="404" redirect="~/NonFound.html"/>
    </customErrors>

defaultRedirect:发生错误时,浏览器重定向到的URL
mode:On表示启动自定义错误,Off表示禁用自定义错误,RemoteOnly向远程客户端显示自定义错误,并且向本地主机显示ASP.NET错误
statusCode:Http中特定的错误状态码
redirect:发生该错误状态码时重定向的页面

2.使用HandleError处理错误

Web.config配置的局限性

  1. 针对整个网站点的错误,配置错误显示页面,但是这个信息显示一般比较模糊
  2. 如果针对某种类型的控制器,甚至动作方法,显示更具体的信息,使用Web.config方式不合适
  3. 使用try catch也不合适(业务代码和错误代码混编)
    HandleError特性:针对动作方法更方便的错误显示方式
[HttpPost]
        [HandleError( ExceptionType =typeof(System.Exception),View ="Error")]
        public ActionResult GetUserInfor(int Id)
        {
            UserServer server = new UserServer();
            UserInfor user = server.GetUserDetail(Id);
            ViewBag.User = user;
            return View();
        }
ExceptionType:捕获异常的类型
View:特定的Error视图
  1. 在控制器中添加特性
  2. Error视图:创建当前控制器对应的View文件夹中或在Shared文件夹中
  3. 应用次特性后,Web.Config中定义的错误处理配置将失效
    在Error视图中可以实现错误的详细信息
    原因是:在发生错误时,HandleError会将异常信息封装成一个HandleErrorInfor对象,然后传递给Error视图

常见的错误状态码

404:表示未找到文件

403:表示禁止访问

500:内部服务器错误

[https://www.cnblogs.com/daiyacheng1991/p/11411511.html]:

状态码 类别 原因
1xx Informational(信息性状态码) 接收的请求正在处理
2xx Success(成功状态码) 请求正常处理完毕
3xx Redirection(重定向状态码) 需要进行附加操作以完成请求
4xx Client Error(客户端错误状态码) 服务器无法处理请求
5xx Server Error(服务器错误状态码) 服务器处理请求错误

猜你喜欢

转载自blog.csdn.net/dust__/article/details/106205763