WCF Web服务异步调用多个Web服务

本文关键字:服务 Web 异步 WCF 调用 | 更新日期: 2023-09-27 18:19:53

我正面临来自我创建的一个WCF Web服务的问题。此web服务调用多个web服务,以便能够为调用者建立响应。

var carInformation = Task.Run(() => carProvider.GetCarByCarNumberAsync(brandCode, carNumber));
var carHistory = Task.Run(() => carProvider.GetCarHistoryByCarNumberAsync(brandCode, carNumber));
var carConf = Task.Run(() => carProvider.GetConfByCarNumberAsync(brandCode, carNumber));
var carAdvSet = Task.Run(() => carProvider.GetAdvSetyByCarNumberAsync(brandCode, carNumber));
var carComp = Task.Run(() => carProvider.GetComponentsyByCarNumberAsync(brandCode, carNumber));
var carDealersComments = Task.Run(() => carProvider.GetDealerCommentsByCarNumberAsync(brandCode, carNumber));
var carPromotions = Task.Run(() => carProvider.GetCarPromotionsAsync(brandCode, carNumber));
var carCompetitors = Task.Run(() => carProvider.GetCompetitorsAsync(brandCode, carNumber));
var carSuppliers = Task.Run(() => carProvider.GetSupplierssAsync(brandCode, carNumber));
List<Task> taskList = new List<Task>();
taskList.Add(carInformation);
taskList.Add(carHistory);
taskList.Add(carAdvSet);
taskList.Add(carComp);
taskList.Add(carDealersComments);
taskList.Add(carPromotions);
taskList.Add(carCompetitors);
taskList.Add(carSuppliers);
await Task.WhenAll(taskList);

根据上面的代码片段,我预计所有调用都将同时执行,因为这些调用并不相互依赖。但这种情况并没有发生,当我查看IIS日志(来自其他web服务)时,或者即使我使用Fiddler来记录所有这些请求,我也会看到只有5个请求同时执行,而其他请求则在第一个请求之间执行。等待响应,或者在其他情况下是在其中一个异步调用完成之后。

我的web服务所在的IIS上是否缺少某些配置?或者web配置中允许在PerCall上创建更多线程的设置。

WCF Web服务异步调用多个Web服务

WCF服务类上的

[ServiceBehavior(UseSynchronizationContext=false)]属性会有所帮助。