Wcf Web服务抛出异常并不';我没有回复

Wcf Web服务抛出异常并不';我没有回复,wcf,web-services,exception,Wcf,Web Services,Exception,我正在从控制台应用程序调用一个web服务()。我只需要使用SSN和名称运行“dossnsSearch”,并确认是否有成功的返回结果。在我的30条测试记录中,有29条没有返回任何内容,但是当有有效的响应时,服务抛出异常,响应永远不会返回。例外情况如下: Error in deserializing body of reply message for operation 'doSsnSearch'. 内部例外是: {"Cannot assign object of type System.Stri

我正在从控制台应用程序调用一个web服务()。我只需要使用SSN和名称运行“dossnsSearch”,并确认是否有成功的返回结果。在我的30条测试记录中,有29条没有返回任何内容,但是当有有效的响应时,服务抛出异常,响应永远不会返回。例外情况如下:

Error in deserializing body of reply message for operation 'doSsnSearch'.
内部例外是:

{"Cannot assign object of type System.String[] to an object of type System.String."}
我正在使用一个服务引用来添加WSDL,并尝试增加readerquotas中所有内容的大小,以及在配置端可以想到的所有其他内容。最糟糕的是我以前修好了,但现在我忘了我做了什么:\

我已经确认web服务调用与我通过使用SoapUI提供的数据一起工作,并且我能够得到有效的响应

以下是呼叫代码:

var client = new EPLSSearchWebServiceClient();
var query = new OperationSsnSearch 
{
  exactName = "XXX",
  ssnOrTin = "xxxxxxxxx"
};

var response = Client.doSsnSearch(query);  <--- exception is thrown here

例外情况是明确说明您的问题。您正在尝试将字符串数组分配给字符串。请检查您执行此任务的代码。
函数调用很可能返回字符串数组,因此首先检查该函数的返回类型。 检查分配给响应的内容


我不知道你在用哪种语言编码,但我告诉你最简单的方法,你可以参考。如果您能解决这个问题,我将非常高兴。b只检查这件最简单的事情。

您应该获得有关错误发生位置的更具体信息。它是在服务器端还是客户端?(我假设是客户)。客户端是否发送请求并获得响应(使用fiddler进行检查),或者错误是否发生在发送内容之前

接下来,您要确保已从最新的WSDL版本生成代理。在生成代理之后,服务器可能发生了更改,因此应该发出更新


最后,这可能是WCF代理生成中的一个错误。如果你不能用我以前的建议解决这个问题,那么请在这里发布响应soap和服务代理的代码(reference.cs)。

这是C#。我用来运行此服务的所有代码都包含在这里。dossnssearch(query)是第三方代码,我无法进入它。异常在函数返回之前抛出,因此“response”永远不会得到值。Ok。不要介入,但检查一下你们自己是否满意,如果这个方法有效的话。我想说的是,做这个任务的代码是我看不到的。当没有结果时,不会引发异常,但对于具有名称和ssn的特定查询,当有结果返回时,会引发异常。确定后,应将变量响应指定为和字符串数组。e、 g String[]response=Client.dossnsSearch(查询);当没有结果时,将分配空值,该值对于任何对象都是有效值。我想是的,WSDL提供了一种特定的返回类型(EPLSSearchResponse),因此我只能在返回值为该值或错误在服务器上的“var”时进行编译。不会向客户端返回任何内容。我有最新的WSDL。我会把服务代码贴在上面哇,你说得对。看起来他们在最近几天内更改了WSDL的地址。谢谢,伙计。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="EPLSSearchWebServiceSoapBinding" closeTimeout="00:01:00" openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferSize="999999" maxBufferPoolSize="999999" maxReceivedMessageSize="999999" messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true">
      <readerQuotas maxDepth="999999" maxStringContentLength="999999" maxArrayLength="999999" maxBytesPerRead="999999" maxNameTableCharCount="999999" />
      <security mode="Transport" />
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="https://gw.sam.gov/epls/services/EPLSSearchWebService" binding="basicHttpBinding" bindingConfiguration="EPLSSearchWebServiceSoapBinding"
            contract="SAMWebServices.EPLSSearchWebService" name="EPLSSearchWebService"/>
</client>
</system.serviceModel>
...
 public SAM_Caller.Console_App.SAMWebServices.EPLSSearchResponse doSsnSearch(SAM_Caller.Console_App.SAMWebServices.OperationSsnSearch query) {
        SAM_Caller.Console_App.SAMWebServices.doSsnSearchRequest inValue = new SAM_Caller.Console_App.SAMWebServices.doSsnSearchRequest();
        inValue.query = query;
        SAM_Caller.Console_App.SAMWebServices.doSsnSearchResponse retVal = ((SAM_Caller.Console_App.SAMWebServices.EPLSSearchWebService)(this)).doSsnSearch(inValue);
        return retVal.doSsnSearchReturn;
    }