以下是这种情况:
我开发了一个Web服务,只需获取字符串参数并返回DataSet
:
[WebMethod]
public DataSet login(string strClientCertificate, string strClientChallengeSigned, string MsgChallenge, string rndNum)
我想在客户端使用此Web服务,因此我准备了参数并将其发送到我引用的Web服务:
在客户端:
DataSet xmlResponse = new DataSet();
MySrvRef.StockServiceSoapClient proxy2 = new StockServiceClient.MySrvRef.StockServiceSoapClient();
xmlResponse = proxy2.login(strCert, strSignedMsg, message, randomNum);
我想要的只是向客户端展示xmlResponse,但我在VS2008中遇到了这个错误:
“System.ServiceModel.ProtocolException”类型的未处理异常 发生在mscorlib.dll
其他信息:远程服务器返回了意外情况 回复:(400)错误请求。
我完全糊涂了。有什么想法吗?
[EDIT1]
我已经更改了客户端app.config
文件中的内容长度:
<basicHttpBinding>
<binding name="StockServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="2147483647" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
[编辑2] 我甚至将我的方法改为简单的字符串返回方法:
[WebMehod]
public string login(string x, string y, string z, string w)
{
return "yes";
}
从客户端调用它,但得到了相同的协议异常:(。
我的服务中有另一种方法,定义为:
[WebMehod]
public byte[] getChallenge()
我在客户端称它没有任何问题。
答案 0 :(得分:0)
我发现了问题。当我在我的Web服务方法中插入一个断点(带参数)时,它没有被击中。所以我调查了这个问题并发现我的一个字符串参数在string
中没有被识别为C#
参数,这就是为什么我的Web服务方法没有从客户端调用而我得到了协议异常错误。希望这将有助于其他有同样问题的人。