我编写了一个 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);
}
它适用于延迟,但我想了解它为什么会起作用......以及如何使用狡猾的解决方法来让它工作。