6

我有一个相当大的“旧”WCF 服务,有许多不同的方法。

这些方法中的大多数都是“正常”的,因此它们应该在 10 秒内回答,但是有几种方法(8 或 9)是长时间的过程,因此它们可能需要很长时间才能得到响应。

接收超时和发送超时设置为 00:40:00,以确保他们有足够的时间来完成这些过程。

问题是有时我们会遇到连接问题,并且“正常”方法需要很长时间才能崩溃......

他们都在同一个服务中,因为他们使用了一个非常大的模型,并且他们希望在每次调用中重用服务中的模型(没有 PersonsService.User 和 RobotsService.User... 因为它们是不同的同一个类服务)。

我想的第一个解决方案是用那些长流程创建一个不同的服务,并为正常服务设置一个短的超时时间......但由于模型的使用,我应该做很多改变......

有没有办法在每次通话中设置不同的超时时间?还是通过服务方式?无论如何我应该分块服务吗?

提前致谢!!

4

1 回答 1

10

首先,在您的情况下配置的超时时间是OperationTimeout,它允许在超时之前等待服务回复的时间限制。您可以在从客户端进行调用之前修改操作超时。

OperationTimeout在通道上设置 ,您可以键入您的代理/通道实例为IContextChannel并设置OperationTimeout

例如:

IClientChannel contextChannel = channel as IClientChannel;
contextChannel.OperationTimeout = TimeSpan.FromMinutes(10);

HTH,阿米特

于 2012-10-18T18:39:13.147 回答