Web服务异常处理

时间:2010-06-01 06:57:35

标签: c# .net web-services

我有一个WebMethod,它接收以下类型的参数:

[WebMethod]
User(long userid,int number)

当客户端发送不同类型的参数时,我必须捕获此错误并写入数据库等。

例如ArgumentExceptions ...

我该如何解决这个问题?

感谢。

3 个答案:

答案 0 :(得分:1)

您是否尝试过客户端使用错误类型时会发生什么?

我希望SOAP库能够捕获这个并引发异常。

在您自己的方法中,您只能检查传入参数的。这就像在普通(非网络)方法中一样。

答案 1 :(得分:0)

您可以使用以下方法:

每个Web方法都会返回某种WebMethodResult。

例如

[WebMethod]
public WebMethodResult DoSomethng(guid p_userId)
{

IfMethodIsSuccessful()
{
    WebMethodResultSuccess successResult = new WebMethod();
    // Add required information into web method result object

   return successResult;
}
else
{
   WebMethodResultFailure failedResult = new WebMethodResultFailure();
   return failedResult;
}

}

这里的想法是,每当调用Web方法时,它都会返回某种对象。

在这种情况下,WebMethodResult将是父类,WebMethodResultSuccess和WebMethodResult失败将从父类继承。

您可以添加自己的逻辑,将所有内容包装到try catch块中并返回成功/失败结果,而不是IsMethodIsSuccessfull。

如果从java脚本或jquery调用web方法,除非使用SOAP或某种替代方法,否则不会将异常传递回客户端。通过发回自定义对象,您可以通过javascrip / jquery读取它们并向用户显示相应的消息。

希望这是有道理的。

答案 2 :(得分:0)

在日志记录方面,您应该编写一个通用的异常处理层或查看开源替代方案。

您将捕获特定异常并将其传递给异常处理层。在该层(dll)中,您将在数据库中记录异常或写入平面文件。 DB可能是更好的选择,因为可以轻松分析数据。

另一个选择是登录到Windows事件日志,但我个人不喜欢这样,因为生成异常的统计数据并不容易,我认为它的大小有限制。