我可以从我的测试控制台应用程序向我的WCF服务发送数据而不会出现任何错误。 WCF测试工具也可以正常运行。但是当我尝试从通用Windows平台应用程序向WCF服务发送相同的字节数组时,我收到以下错误:
请求频道在00:01:00之后尝试发送超时。增加传递给Request的调用的超时值或增加Binding上的SendTimeout值。分配给此操作的时间可能是较长超时的一部分。
我一直在研究解决方案几个小时,但我无法解决这个问题。我也不认为只向服务发送一个字节数组应该花一点时间。
这是ServiceReferences.Designer.ClientConfig文件:
<configuration>
<configSections>
</configSections>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="IncreasedTimeOut" receiveTimeout="00:10:00" sendTimeout="00:10:00"
openTimeout="00:10:00" closeTimeout="00:10:00" />
</basicHttpBinding>
</bindings>
<services>
<service name="DServis.DenemeServis">
<endpoint
address="http://***.com/Service.svc" binding="basicHttpBinding"
bindingConfiguration="IncreasedTimeOut"
contract="DenemeServis.IService" />
</service>
</services>
</system.serviceModel>
</configuration>
此外,我还在调用之前在代码隐藏处设置了这些超时值,看看它是否有任何区别:
_dServis.Endpoint.Binding.SendTimeout = new TimeSpan(0, 10, 0);
_dServis.Endpoint.Binding.CloseTimeout = new TimeSpan(0, 10, 0);
_dServis.Endpoint.Binding.OpenTimeout = new TimeSpan(0, 10, 0);
_dServis.Endpoint.Binding.ReceiveTimeout = new TimeSpan(0, 10, 0);
再一次没有机会。例外是一样的。
我确信它与客户端相关,因为服务会响应来自控制台应用程序的调用,正如我在帖子开头所描述的那样。什么可能导致这个问题?
更新
我在服务器端没有wcf跟踪错误日志(正如预期的那样)。另一方面,我设法在课堂实施中设置超时。现在,我在尝试发送字节数组时得到“net_http_client_execution_error”。这让我知道设备在尝试发送这些类型的数据时无法建立连接。
为了更深入地解决这个问题,我设置了ngrok来测试服务行为。在尝试从服务器检索最小数据时,设备应用程序再次抛出“net_http_client_execution_error”;但是,如果我从测试控制台应用程序调用该方法,则不会出现错误。现在我确定这是一个设备问题,正在研究如何解决它。欢迎任何想法。
答案 0 :(得分:0)
我想你可以试试:
答案 1 :(得分:0)
在web.config中设置服务器端绑定后,我不得不在UWP客户端增加sendtimeout,如下所示:
databaseClient = new CategoryDatabase.CategoryServiceClient();
databaseClient.Endpoint.Binding.SendTimeout = new TimeSpan(0, 10, 0);