从Web服务获取数据集

时间:2013-08-24 10:06:09

标签: c# asp.net web-services visual-studio-2008

以下是这种情况: 我开发了一个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()

我在客户端称它没有任何问题。

1 个答案:

答案 0 :(得分:0)

我发现了问题。当我在我的Web服务方法中插入一个断点(带参数)时,它没有被击中。所以我调查了这个问题并发现我的一个字符串参数在string中没有被识别为C#参数,这就是为什么我的Web服务方法没有从客户端调用而我得到了协议异常错误。希望这将有助于其他有同样问题的人。