我们有一个 Windows 应用程序,它调用 Web 服务方法来访问数据库。我们发现一个案例,我们对 IIS 上的 WCF 服务进行了长时间(15 秒以上)的异步 Web 服务调用。如果 UI 在此过程中进行其他阻塞(旧代码)Web 服务调用,则这些其他调用将被阻止,直到初始异步调用完成。
当 UI 和 web 服务都在带有 IIS Express 的 Visual Studio 中运行时,不会发生这种情况:阻塞调用很快,并且所有这些操作都在长异步调用完成之前完成。
所有 Web 服务均具有以下内容:
<serviceThrottling
maxConcurrentCalls="5000" maxConcurrentSessions="5000" maxConcurrentInstances="5000" />
此外,到处都是 maxConnections="500"。
我们希望让 IIS 以与 IIS Express 相同的方式同时处理这些并发的 web 服务调用。
...
如果有帮助的话,这一切都是有意义的:我们搜索对象。搜索返回符合条件的前 50 个(默认情况下)项目,同时我们对同一查询执行 count(*) 的异步调用。计数查询可能需要很长时间。用户坚持认为有时他们想知道总数是多少,但他们通常希望能够在计数返回之前打开结果列表中的对象。打开对象是同步 webservice 调用的用武之地。以前,搜索结果和计数都是同一 webservice 方法的一部分。