我有接受下列类型的参数,一个WebMethod:Web服务异常处理
[WebMethod]
User(long userid,int number)
当客户端发送的参数与不同类型的我想,我必须抓住这个错误,并写入到数据库等
例如ArgumentExceptions ...
我该如何解决这个问题?
谢谢。
我有接受下列类型的参数,一个WebMethod:Web服务异常处理
[WebMethod]
User(long userid,int number)
当客户端发送的参数与不同类型的我想,我必须抓住这个错误,并写入到数据库等
例如ArgumentExceptions ...
我该如何解决这个问题?
谢谢。
您是否尝试过在客户端使用错误的类型时会发生什么情况?
我希望SOAP库能够捕获这个并引发异常。
在您自己的方法中,您只能检查传入参数的值。这就像一个正常的(非网络)方法。
这正是我的意思。我无法在SOAP扩展中找到处理方法。 – Jack 2010-06-01 09:12:42
您可以用下面的办法:
每个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失败会从父类继承。
除了IsMethodIsSuccessfull,您可以添加自己的逻辑,将所有内容都包装到try catch块中并返回成功/失败结果。
如果调用从Java脚本或jQuery的网页的方法,该异常不会被除非你使用SOAP或某种替代性的回传给客户端。通过发回自定义对象,您可以通过javascrip/jquery阅读它们并向用户显示适当的消息。
希望这是有道理的。
在日志记录方面,您应该编写一个通用的异常处理层或查看开源替代方案。
您将捕获特定异常并将其传递给异常处理层。在该层(dll)中,您将在数据库中记录异常或写入平面文件。数据库可能是更好的选择,因为可以轻松分析数据。
另一种方法是登录到Windows事件日志,但我个人不喜欢这个,因为它并不易产生异常的统计数据,我认为它有大小限制。
如何在不提供正确参数类型的情况下调用Webservice上的方法? – KroaX 2010-06-01 08:11:21
@KroaX有可能。尽管大多数调用web服务的c#应用程序都将在编译时进行验证,但这并不适用于让我们说例如访问该服务的javascript客户端。 – TimothyP 2010-06-01 08:14:20
你想在服务器或客户端上捕获它吗? – 2010-06-01 17:32:48