Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.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# 如何从webservice返回响应_C#_Asp.net - Fatal编程技术网

C# 如何从webservice返回响应

C# 如何从webservice返回响应,c#,asp.net,C#,Asp.net,我已经创建了一个web服务,客户端将调用它的方法。假设一个方法有四个参数,我想检查一下,如果其中任何一个参数为空,我想向客户端发送一个响应,并像警报一样发送,以便客户端知道哪个参数为空。我不能强迫客户提供准确的所有参数。这可能吗 [WebMethod] Public void Method1(string str1,string str2,string str3,string str4) { if((str1=="") || (str2=="")) { //sen

我已经创建了一个web服务,客户端将调用它的方法。假设一个方法有四个参数,我想检查一下,如果其中任何一个参数为空,我想向客户端发送一个响应,并像警报一样发送,以便客户端知道哪个参数为空。我不能强迫客户提供准确的所有参数。这可能吗

[WebMethod]
Public void Method1(string str1,string str2,string str3,string str4)
{
    if((str1=="") || (str2==""))
    {
        //send response back to client in form of an alert
    }
}

据我所知,您可以将一些约定的对象发送回发送方,发送方应该准备好接收这些对象。它可以简单到包含“OK”或“ERROR”的字符串,也可以复杂到包含错误代码、描述、严重性级别等。但是,发送者在使用它时如何处理它完全取决于他们


例如,您可以将响应中的一个字段设置为严重级别(可能使用类似于Microsoft的方法),然后发件人可以使用该字段来确定他们是否向用户显示警报,或者只是将错误记录在系统的某个位置。

您说过您无法控制调用web方法的人。由于该方法的类型为void,因此用户只会知道是否发生了重大事件。抛出一个异常,错误会传播到什么程度,这取决于托管web服务的web服务器和托管客户端的web服务器(如果客户端是网页)的设置

在“最佳”情况下,用户将看到错误消息“Method1中的str1或str2为空。在“最差”情况下在这种情况下,用户将获得标准IIS/ASP.NET错误页。正如您所说,您无法控制调用者,这取决于调用者如何为客户端编码以及他如何部署应用程序。但不管是什么情况,它都会引起他的注意


我把最好的和最坏的放在引号里,因为最好的和最坏的对不同的人意味着不同的东西。对于那些希望获得最大安全性的人来说,最好的方法是当错误页面没有说明错误时。对于希望用户友好和快速排除故障的人,最好是在错误消息包含大量详细信息以及下一步要做的事情时。

不要用自定义对象重新创建控制盘。看

最简单的方法就是抛出一个异常(听起来像是
ArgumentException
在您的情况下是合适的),客户端将收到一个
SoapException


如果您想要更多的控制,例如设置错误代码的能力,也可以自己抛出一个
SoapException

您的方法返回类型void?如何将回复发送回client@sneakthief是的,我认为这是唯一的选择这是重新发明轮子:看@SleekTheep:OP说他对客户没有控制权。如果他能让客户端写:If(ws.Method1==“ERROR”)MessageBox.Show。。。。那就好了。
throw new Exception("str1 or str2 in Method1 is empty");