C# web服务异常处理
我有一个WebMethod,它接收以下类型的参数:C# web服务异常处理,c#,.net,web-services,C#,.net,Web Services,我有一个WebMethod,它接收以下类型的参数: [WebMethod] User(long userid,int number) 当客户机发送不同类型的参数时,我必须捕获这个错误并写入数据库等 例如,异常 我怎样才能解决这个问题 谢谢。您是否尝试过当客户使用错误类型时会发生什么情况 我希望SOAP库能够捕获这一点并引发异常 在您自己的方法中,您只能检查传入参数的值。这就像在普通(非web)方法中一样有效。您可以使用以下方法: 每个web方法都将始终返回某种WebMethodResult 比
[WebMethod]
User(long userid,int number)
当客户机发送不同类型的参数时,我必须捕获这个错误并写入数据库等
例如,异常
我怎样才能解决这个问题
谢谢。您是否尝试过当客户使用错误类型时会发生什么情况 我希望SOAP库能够捕获这一点并引发异常
在您自己的方法中,您只能检查传入参数的值。这就像在普通(非web)方法中一样有效。您可以使用以下方法: 每个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将是父类,WebMethodResultAccess和WebMethodResult failure将从父类继承
您可以添加自己的逻辑,将所有内容包装到try-catch块中,并返回成功/失败结果,而不是IsMethodIsSuccessfull
如果从java脚本或jquery调用web方法,除非使用SOAP或某种替代方法,否则不会将异常传递回客户端。通过发回自定义对象,您可以通过javascrip/jquery读取它们,并向用户显示适当的消息
希望这是有意义的。在日志方面,您可能应该编写一个通用的异常处理层或研究开源替代方案 您将捕获特定的异常并将其传递给异常处理层。在该层(dll)中,您可以将异常记录在数据库中或写入平面文件中。DB可能是一个更好的选择,因为数据很容易分析
另一种选择是登录到windows事件日志,但我个人不喜欢这样,因为生成异常统计信息并不是那么容易,而且我认为它的大小是有限的。如果不提供正确的参数类型,怎么可能在Web服务上调用方法?@KroaX这是可能的。虽然对Web服务的大多数c#app调用将在编译时进行验证,但这并不适用于访问该服务的javascript客户端。您想在服务器上还是在客户端上捕获它?这正是我的意思。我在SOAP扩展中找不到处理方法。