Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 更改Windows 8应用商店应用程序WCF服务上的终结点地址会导致“;客户端和服务绑定可能不匹配;例外_C#_Wcf_Windows 8_Windows Store Apps - Fatal编程技术网

C# 更改Windows 8应用商店应用程序WCF服务上的终结点地址会导致“;客户端和服务绑定可能不匹配;例外

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=

我已经编写了一个Windows8商店应用程序,这是我公司的一个业务线(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);
}

它可以处理延迟,但我想了解它为什么会工作……以及如何使用不可靠的解决方法来工作。

难道没有一个构造函数将端点作为参数吗?如果是这样,试着用那个。如果没有,我想在这个构造函数中会发生异步的事情<代码>等待任务.Yield()可能足以等待异步部分完成。有一个构造函数将端点作为参数,但它给出了相同的异常。我同意,出现了一些异步部分,但我找不到它。我将给出
wait Task.Yield()一次尝试too@KrisVandermotten已尝试该任务。Yield()…它正在工作。这只是一个概念验证应用程序,所以我很高兴暂时就这样离开它。谢谢