我有一个调用WCF服务的Silverlight应用程序。此服务是一项繁重的操作,可能需要很长时间才能运行。该服务在230秒(3分50秒)后超时。我收到了令人讨厌的“ NotFound”错误。通过提琴手,我发现服务器正在响应HTTP 500错误,而内容是带有消息“ 500错误,请求超时”的HTML排序。
我的web.config将超时设置为将近一小时:
<binding name="ServicesBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647" receiveTimeout="00:59:00"
sendTimeout="00:59:00" openTimeout="00:59:00" closeTimeout="00:59:00">
<readerQuotas maxStringContentLength="2147483647" maxArrayLength="2147483647" />
<security mode="None" />
</binding>
当我在silverlight应用程序中创建服务时,我使用以下代码:
string url = serverUrl + "Services/DataService.svc";
DataServiceClient cli = new DataServiceClient();
cli.Endpoint.Binding.SendTimeout = new TimeSpan(1, 0, 0);
cli.Endpoint.Binding.ReceiveTimeout = new TimeSpan(1, 0, 0);
if (serverUrl.StartsWith("https:"))
((BasicHttpBinding) cli.Endpoint.Binding).Security.Mode = BasicHttpSecurityMode.Transport;
cli.Endpoint.Address = new EndpointAddress(url);
如您所见,我也在这里设置超时。但是最终WCF似乎忽略了两个超时配置,因为在不到4分钟的时间内就超时了。还有其他地方可以获取超时配置吗?
最后一个也许是重要的信息,该应用程序托管在Microsoft Azure(应用程序服务,而不是虚拟机)中。
我在这里找到How can increase Azure App Service 230 sec request time out,这似乎是一个天蓝色的问题,它是无法更改的默认天蓝色超时。我将不得不尝试使其以某种方式异步。