使用了Owin的MVC5程序如何捕获全局异常然后跳转到相应界面(不只是500,404等等其他错误码都要捕捉到)

Brown_Sugar 2017-11-10 06:54:43
如题,web server依然是IIS,我想要的效果就是能在自己程序中写代码捕获到全局的所有异常,不只是代码运行异常造成的500的错误,还要有其他http错误码的异常,包括用户直接访问服务器静态文件的请求也要捕获到, 最好是能在自定义的Owin MiddleWare中捕获并处理 返回到指定的error页面。可以做到吗? 还是说必须定义Application对象的Application_Error事件?或者只能配置webconfig?
...全文
480 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Brown_Sugar 2017-11-20
  • 打赏
  • 举报
回复
引用 9 楼 foren_whb 的回复:
如果你的程序需要如此严苛, 那就必须设计一整套解决方案,包括应用代码内的错误处理,iis的传递的错误处理,操作系统的错误日志的处理等等,甚至页面http的错误,也要专门建立api通道收集处理,不要试图用一个简单的办法能做到所有的这些事
最后用httpModule基本达到了我想要的效果了 还是谢了
丰云 2017-11-20
  • 打赏
  • 举报
回复
引用 8 楼 Brown_Sugar 的回复:
[quote=引用 7 楼 foren_whb 的回复:] 多看看http协议和web原理,再来讨论这些问题吧。。。。 不要以为所有错误都会进mvc代码。。。。不要以为所有错误你都能通过mvc内加代码捕获!!!!
好吧 那么既然无法通过mvc内加代码捕获到,有没有什么办法能捕获? 访问action的错误我通过配置文件配置customerrors节点可以跳转 但是配置跳转并不能向error页面传递http错误码 或者我就要把所有错误码都写一遍 比如405就是传递参数405 400就传递400 那么有办法在跳转的时候传递当前的错误码吗? 还有就是直接访问静态文件的请求应该也是可以捕获到的吧 我随便找几个主流大型网站测试了下 访问一个不存在的文件都可以跳转 虽说这些网站都不是.net的。 mvc代码确实不行 那么HttpHandler和HttpModule能做到吗?还是说这2个只能处理请求 但无法处理响应[/quote] 如果你的程序需要如此严苛, 那就必须设计一整套解决方案,包括应用代码内的错误处理,iis的传递的错误处理,操作系统的错误日志的处理等等,甚至页面http的错误,也要专门建立api通道收集处理,不要试图用一个简单的办法能做到所有的这些事
  • 打赏
  • 举报
回复
引用 楼主 Brown_Sugar 的回复:
如题,web server依然是IIS,我想要的效果就是能在自己程序中写代码捕获到全局的所有异常,不只是代码运行异常造成的500的错误,还要有其他http错误码的异常,包括用户直接访问服务器静态文件的请求也要捕获到, 最好是能在自定义的Owin MiddleWare中捕获并处理 返回到指定的error页面。可以做到吗? 还是说必须定义Application对象的Application_Error事件?或者只能配置webconfig?
400系列的错误需要通过iis自定义错误处理页面捕获,无法做到实时捕捉。 500~600的错误在你没有使用自定义错误捕捉页面之前反馈到用户的都是服务器内部错误500,这个在mvc中有很多方法捕获。 100、200不用说了,300无法捕获。 iis或你的网站本身错误,导致iis无法启动这个需要在windows日志中捕获。 如果iis错误后导致的用户无法找到网站错误无法捕获。
Brown_Sugar 2017-11-18
  • 打赏
  • 举报
回复
引用 7 楼 foren_whb 的回复:
多看看http协议和web原理,再来讨论这些问题吧。。。。 不要以为所有错误都会进mvc代码。。。。不要以为所有错误你都能通过mvc内加代码捕获!!!!
好吧 那么既然无法通过mvc内加代码捕获到,有没有什么办法能捕获? 访问action的错误我通过配置文件配置customerrors节点可以跳转 但是配置跳转并不能向error页面传递http错误码 或者我就要把所有错误码都写一遍 比如405就是传递参数405 400就传递400 那么有办法在跳转的时候传递当前的错误码吗? 还有就是直接访问静态文件的请求应该也是可以捕获到的吧 我随便找几个主流大型网站测试了下 访问一个不存在的文件都可以跳转 虽说这些网站都不是.net的。 mvc代码确实不行 那么HttpHandler和HttpModule能做到吗?还是说这2个只能处理请求 但无法处理响应
丰云 2017-11-14
  • 打赏
  • 举报
回复
引用 3 楼 Brown_Sugar 的回复:
[quote=引用 1 楼 foren_whb 的回复:] 404涵盖了所有资源缺失的错误, 500涵盖了所有服务处理错误, 你还想怎么样? 你还想捕获什么错误?那些还没到应用程序就出错的,你觉得mvc能捕获吗? 或者你的代码把错误屏蔽,错误根本没有传递出来,mvc能捕获吗?
服务器返回的错误可不止这2种吧 400到500之间的 500-600之间的错误那么多 我都需要捕获到 而且我问的是如何在代码里捕获 访问action的还好说点 但是访问静态文件的404错误我在代码里捕获不到 [/quote] 多看看http协议和web原理,再来讨论这些问题吧。。。。 不要以为所有错误都会进mvc代码。。。。不要以为所有错误你都能通过mvc内加代码捕获!!!!
Brown_Sugar 2017-11-11
  • 打赏
  • 举报
回复
引用 5 楼 tangyanzhi1111 的回复:
文件是filecontentresult 也是actionresult 所以exception也是可以的
你没懂我意思 假设是IISExpress作为webserver 端口号是2333 文件是根目录下的一个叫a.txt的文件 那么地址是 http://localhost:2333/a.txt 这个是根本不走控制器访问的
丰云 2017-11-11
  • 打赏
  • 举报
回复
404涵盖了所有资源缺失的错误, 500涵盖了所有服务处理错误, 你还想怎么样? 你还想捕获什么错误?那些还没到应用程序就出错的,你觉得mvc能捕获吗? 或者你的代码把错误屏蔽,错误根本没有传递出来,mvc能捕获吗?
江湖评谈 2017-11-11
  • 打赏
  • 举报
回复
文件是filecontentresult 也是actionresult 所以exception也是可以的
Brown_Sugar 2017-11-11
  • 打赏
  • 举报
回复
引用 2 楼 tangyanzhi1111 的回复:
exceptionfilter筛选器 可以捕捉action 所有异常,你想要什么都行
这个也只是捕获访问action的异常 直接访问文件的异常呢?
Brown_Sugar 2017-11-11
  • 打赏
  • 举报
回复
引用 1 楼 foren_whb 的回复:
404涵盖了所有资源缺失的错误, 500涵盖了所有服务处理错误, 你还想怎么样? 你还想捕获什么错误?那些还没到应用程序就出错的,你觉得mvc能捕获吗? 或者你的代码把错误屏蔽,错误根本没有传递出来,mvc能捕获吗?
服务器返回的错误可不止这2种吧 400到500之间的 500-600之间的错误那么多 我都需要捕获到 而且我问的是如何在代码里捕获 访问action的还好说点 但是访问静态文件的404错误我在代码里捕获不到
江湖评谈 2017-11-11
  • 打赏
  • 举报
回复

exceptionfilter筛选器 可以捕捉action 所有异常,你想要什么都行

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧