我正在尝试实现通用错误处理。
public partial class SomePage : System.Web.UI.Page
{
//...
[WebMethod()]
public static int SomeMethod()
{
//... some code
//... exception
}
//...
}
可以使用global.asax处理常规请求,但静态WebMethods不会通过Application_BeginRequest或Application_Error。我尝试编写一个属性,派生自ExceptionFilterAttribute并使用OnException覆盖,但它也不起作用。
那么谁处理这些请求?
客户端调用是通过以下jQuery ajax请求进行的:
$.ajax({
type: "POST",
url: "SomePage.aspx/SomeMethod",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (response) {
someVar = response.d;
},
error: function (a, b, c) {
console.log(a);
// handle
}
});
答案 0 :(得分:1)
从文档中看起来你需要构建一个SOAP扩展来全局处理错误 - 下面有用的代码片段和链接:
Web应用程序可以由多个Web服务组成。然而, Global.asax语法文件中的Application_Error事件不能 用于全局异常处理。 Web的HttpHandler 服务消耗Web服务时发生的任何异常 在Application_Error之前执行并将其转换为SOAP错误 事件被称为。构建SOAP扩展以处理Web服务 全局异常处理程序中的异常。 SOAP扩展可以检查 因为ProcessMessage方法中存在异常。内 在ProcessMessage方法中,检查的Exception属性 SoapMessage在Stage属性设置为AfterSerialize时传递。 有关SOAP扩展的详细信息,请参阅SOAP消息修改使用 SOAP扩展。
摘自Handling and Throwing Exceptions in XML Web Services(我相信也有一些例子可以帮助你)
另外Rick Strahl(MVP)不久前在这个主题上写了这个问题,它解决了原位问题,但没有解决你在全球范围内管理问题的需要http://www.west-wind.com/weblog/posts/2005/Jan/29/NET-Web-Services-and-unhandled-Exceptions
此帖子应指导您根据自己的要求为全局错误处理构建soap扩展程序http://geekswithblogs.net/pavelka/archive/2005/09/05/HowToCreateAGlobalExceptionHandlerForAWebService.aspx