我已经设置了一个服务引用(WCF客户端)来从我设置用于测试的控制台应用程序调用Java Web服务。它使用HTTPS。我有Fiddler设置,可以看到从服务发送和返回的正确值(在Fiddler中)。但是不管我调用什么方法,返回的值,无论它是一个String还是一个对象,都会返回为Null。WCF客户端没有映射和返回空对象
我不确定代理客户端映射是否无效,或者是否需要更改app.config中的配置值。
的app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<system.serviceModel>
<bindings>
<customBinding>
<binding name="ResultsSOAP12Binding">
<textMessageEncoding messageVersion="Soap12" />
</binding>
<binding name="ResultsSOAP12Binding1">
<textMessageEncoding messageVersion="Soap12" />
<httpsTransport />
</binding>
<binding name="ResultsSOAP12Binding2">
<textMessageEncoding messageVersion="Soap12" />
</binding>
</customBinding>
</bindings>
<client>
<endpoint address="https://services.acme.com/results"
binding="customBinding" bindingConfiguration="ResultsSOAP12Binding1"
contract="ResultsServiceReference.Result
</client>
</system.serviceModel>
</configuration>
代码:
static void CallResults()
{
var resultsRequest = new ResultsServiceReference.ResultsRequest();
var client = new ResultsServiceReference.ResultsPortTypeClient("ResultsSOAP12BindingQSPort");
Console.WriteLine("Call Results Service");
ResultsServiceReference.ResultsBatch result = client.latestResults(resultsRequest);
Console.WriteLine(result.Status);
Console.ReadLine();
}
在这段代码中的变量结果为空,甚至当你在看提琴手可以看到XML虽然。直到您尝试使用结果时才显示错误。
顺便说一句,我试着在代理类reference.cs中的latestResults方法中设置一个断点,但调试器没有达到它。
听起来像一个反序列化问题,远程模式已更改并且使'ResultsBatch'代理类无效? – James
这是一个新的设置。我同意这听起来像一个反序列化问题。由于代理类中的断点未达到,故障排除的最佳方式是什么? – Josh
你是说你可以使用fiddler看到正确的回答吗? –