我有一个WebMethod,它接收以下类型的参数:
[WebMethod]
User(long userid,int number)
当客户端发送不同类型的参数时,我必须捕获此错误并写入数据库等。
例如ArgumentExceptions ...
我该如何解决这个问题?
感谢。
答案 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事件日志,但我个人不喜欢这样,因为生成异常的统计数据并不容易,我认为它的大小有限制。