C# 更改Windows 8应用商店应用程序WCF服务上的终结点地址会导致“;客户端和服务绑定可能不匹配;例外
我已经编写了一个Windows8商店应用程序,这是我公司的一个业务线(LOB)应用程序。该应用程序使用basicHttpBinding访问应用程序托管的WCF服务。我在连接该服务时没有遇到任何问题,并且我能够在应用程序运行时从该服务检索数据 当我试图以编程方式更改应用程序指向的服务URI时,我的问题就出现了。如果我将其更改为以完全相同的方式设置的另一个WCF服务(我将其从我们的UAT环境更改为我们的PROD环境),我将收到以下异常:C# 更改Windows 8应用商店应用程序WCF服务上的终结点地址会导致“;客户端和服务绑定可能不匹配;例外,c#,wcf,windows-8,windows-store-apps,C#,Wcf,Windows 8,Windows Store Apps,我已经编写了一个Windows8商店应用程序,这是我公司的一个业务线(LOB)应用程序。该应用程序使用basicHttpBinding访问应用程序托管的WCF服务。我在连接该服务时没有遇到任何问题,并且我能够在应用程序运行时从该服务检索数据 当我试图以编程方式更改应用程序指向的服务URI时,我的问题就出现了。如果我将其更改为以完全相同的方式设置的另一个WCF服务(我将其从我们的UAT环境更改为我们的PROD环境),我将收到以下异常: Content Type text/xml; charset=
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);
}
它可以处理延迟,但我想了解它为什么会工作……以及如何使用不可靠的解决方法来工作。难道没有一个构造函数将端点作为参数吗?如果是这样,试着用那个。如果没有,我想在这个构造函数中会发生异步的事情<代码>等待任务.Yield()代码>可能足以等待异步部分完成。有一个构造函数将端点作为参数,但它给出了相同的异常。我同意,出现了一些异步部分,但我找不到它。我将给出
wait Task.Yield()代码>一次尝试too@KrisVandermotten已尝试该任务。Yield()…它正在工作。这只是一个概念验证应用程序,所以我很高兴暂时就这样离开它。谢谢