无app.config项目调用uploadSync遇发送超时,如何提升超时时间?
问题翻译
执行代码行bool isUploaded = await provider.uploadSync(data, isRemote, token);时出现以下错误:
请求通道尝试发送数据后超时,超时时间为00:01:00。请增加传递给Request调用的超时值,或增加绑定上的SendTimeout值。此操作分配的时间可能是更长超时时间的一部分。
项目中不存在app.config文件,请问该如何提升超时时间?
解决方法
因为没有配置文件,直接在代码里手动配置服务绑定的超时属性即可,核心是找到创建服务客户端/通道的代码位置,调整对应Binding的超时参数:
如果是自动生成的服务客户端代理(比如通过添加服务引用生成的):
不要用无参构造函数实例化客户端,而是手动创建Binding实例并设置超时,再传入构造函数:// 根据你实际使用的绑定类型替换,比如WSHttpBinding、NetTcpBinding等 var binding = new BasicHttpBinding(); // 设置发送超时,这里示例改成5分钟,按需调整 binding.SendTimeout = TimeSpan.FromMinutes(5); // 可选:根据需要调整其他超时参数,比如打开连接、接收响应的超时 binding.OpenTimeout = TimeSpan.FromMinutes(1); binding.ReceiveTimeout = TimeSpan.FromMinutes(5); // 实例化客户端,传入绑定和服务地址 var provider = new YourServiceClient(binding, new EndpointAddress("你的服务地址")); // 调用目标方法 bool isUploaded = await provider.uploadSync(data, isRemote, token);如果是用ChannelFactory创建服务通道:
同样先配置Binding的超时,再创建工厂和通道:var binding = new BasicHttpBinding(); // 设置发送超时为5分钟 binding.SendTimeout = TimeSpan.FromMinutes(5); // 创建通道工厂,传入契约类型、绑定和服务地址 var factory = new ChannelFactory<IYourServiceContract>(binding, new EndpointAddress("你的服务地址")); // 创建服务通道实例 var provider = factory.CreateChannel(); // 执行上传操作 bool isUploaded = await provider.uploadSync(data, isRemote, token);
注意事项
- 一定要匹配你实际使用的Binding类型,比如项目用的是NetTcpBinding就不要创建BasicHttpBinding实例。
- 超时时间根据业务场景调整,避免设置过大占用资源,也不要太小还是触发超时。
- 如果
uploadSync方法本身支持传入CancellationToken设置超时,记得同步调整该参数的超时时间,避免出现双重超时冲突。
内容的提问来源于stack exchange,提问作者user5487197
相关产品推荐
相关产品推荐

