Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# web服务异常处理_C#_.net_Web Services - Fatal编程技术网

C# web服务异常处理

C# web服务异常处理,c#,.net,web-services,C#,.net,Web Services,我有一个WebMethod,它接收以下类型的参数: [WebMethod] User(long userid,int number) 当客户机发送不同类型的参数时,我必须捕获这个错误并写入数据库等 例如,异常 我怎样才能解决这个问题 谢谢。您是否尝试过当客户使用错误类型时会发生什么情况 我希望SOAP库能够捕获这一点并引发异常 在您自己的方法中,您只能检查传入参数的值。这就像在普通(非web)方法中一样有效。您可以使用以下方法: 每个web方法都将始终返回某种WebMethodResult 比

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

[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扩展中找不到处理方法。