gpt4 book ai didi

asp.net - 如何捕获 global.asax 中的 AJAX WebMethod 错误?

转载 作者:行者123 更新时间:2023-12-02 16:58:44 24 4
gpt4 key购买 nike

我正在使用在 ASP.net 应用程序中捕获 global.asax 中的错误的常见做法。在 global.asax 中,我有一个函数 Application_Error 将错误记录到数据库。

这非常适合记录用户请求页面时发生的错误。

但是,当从客户端调用的异步方法(用 [WebMethod] 属性修饰的方法)抛出异常时,这没有任何帮助。异常只是冒泡,可能会返回到客户端代码,但我希望错误处理代码在服务器上自动运行,类似于在 global.asax 中记录页面错误的方式。

我该如何实现这个目标?一种方法是用 try-catch 包装每个异步方法,但这对我来说似乎不是一个好的解决方案。

最佳答案

一种选择是创建 ASP.NET output filter拦截并记录 ASP.NET 发送到客户端的 WebMethod 异常。基本思想如下:

  1. 创建 Stream 的子类来捕获响应的内容。
  2. 当流关闭时,检查响应是否具有 500 状态代码以及 "jsonerror: true" header 。如果是,则响应包含 WebMethod 异常;记录异常。
  3. 在 Global.Application_PostMapRequestHandler 中,安装此类的实例作为 JSON 请求的输出过滤器。

完整的源代码,请参见this StackOverflow answer .

关于asp.net - 如何捕获 global.asax 中的 AJAX WebMethod 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com