我在 Silverlight 项目中连接到 WCF 服务。服务需要完成的任务需要一分钟(这很好),但我收到一个错误。我通过代理与它通信(由 dev studio 在您添加服务引用时创建)
The HTTP request to 'http://localhost/ImporterService.svc' has exceeded the allotted timeout. The time allotted to this operation may have been a portion of a longer timeout.
(其中 ImporterService 是我的服务)
在过去的 3 天里,我已经阅读了所有关于增加以下内容的帖子。
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
openTimeout="00:10:00"
closeTimeout="00:10:00"
没有任何效果,1分钟后仍然超时!
好的,所以在生成的文件 ServiceReferences.ClientConfig 中,我在以下位置添加了值
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_ImporterService" maxBufferSize="2147483647"
receiveTimeout="00:10:00"
sendTimeout="00:10:00"
openTimeout="00:10:00"
closeTimeout="00:10:00"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
....
此超时似乎发生在客户端(例如,我可以通过在服务代码中添加 1 分钟睡眠来实现)
Question1 所以,在我的情况下,我需要改变的只是客户端。
无论如何在 web.config 在 web.config 中,我添加了块
inside the existing <basicHttpBinding> as shown below
><basicHttpBinding>
><binding name="downloadBinding" maxReceivedMessageSize="2000000" maxBufferSize="2000000">
><readerQuotas maxArrayLength="2000000" maxStringContentLength="2000000" />
></binding>
>
><binding name="BasicHttpBinding_IImporterService" maxBufferSize="2147483647"
>receiveTimeout="00:10:00"
>sendTimeout="00:10:00"
>openTimeout="00:10:00"
>closeTimeout="00:10:00"
>maxReceivedMessageSize="2147483647">
><security mode="None" />
></binding>
>
></basicHttpBinding>
></bindings>
注意我使用的名称是 BasicHttpBinding_IImporterService (其他帖子使用了随机名称,它们在客户端和服务器上甚至都不相同!例如
I also have <httpRuntime executionTimeout set to a huge value.
超时只是没有增加。仍然是 1 分钟。
所以,大问题
1. What an I doing wrong, am I putting these settings in the wrong place?
2. Is it just client side I need to do
3. Perhap it can be done in code if these config settings don't work
例如,我在哪里使用它,我使用实例化
ImporterServiceClient importerService = new ImporterServiceClient("*", new >EndpointAddress(ServicePath));
我知道还有很多其他帖子,但是,但大多数只包括属性,而不是确切地设置它们的位置,所以显然我的位置错误?
任何帮助将不胜感激。我想要做的就是增加超时时间(在代码、配置、任何实际工作的地方)!
在此先感谢任何可以在这里提供帮助的人皮特