我写了一个Windows 8商店应用程序,这是我公司的业务线(LOB)应用程序。应用程序使用basicHttpBinding命中应用程序托管的WCF服务。我没有连接到服务的问题,我可以在应用程序运行时从服务中检索数据。
当我尝试以编程方式更改应用指向的服务URI时,我的问题就出现了。如果我将其更改为另一个以完全相同的方式设置的WCF服务(我将它从我们的UAT环境更改为PROD环境),我收到以下异常:
Content Type text/xml; charset=utf-8 was not supported by service http://server/service. The client and service bindings may be mismatched.
编辑 - 我忘了提及,如果我尝试更改Web服务客户端已经指向的URI,就会发生这种情况。
在尝试调试时,我注意到如果我调试了客户端构造,应用程序将连接到服务而没有问题。
我还发现,如果我在客户端构造和更改服务URI之间放置任何延迟,它就可以正常工作。
这是构造代码 - 延迟注释,它不起作用,如果没有注释,它可以工作:
private async void CreateWebServiceClient()
{
this.StockLevelsClient = new StockLevelsWebservice.StockLevelsServiceClient();
await Task.Delay(TimeSpan.FromMilliseconds(1));
this.StockLevelsClient.Endpoint.Address = new System.ServiceModel.EndpointAddress(_uri);
}
它适用于延迟,但我想了解它的工作原理......以及如何使它采用狡猾的解决方法。