情况如下:我开发了一个 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 中遇到了这个错误:
mscorlib.dll 中出现“System.ServiceModel.ProtocolException”类型的未处理异常
附加信息:远程服务器返回了意外响应:(400) 错误请求。
我完全糊涂了。有任何想法吗?
[编辑1]
我已经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()
我在客户端调用它没有任何问题。