我在Visual Studio 2017,.NET 4.5中创建了一个简单的WCF服务。 (添加新项目 - > WCF服务)。它更改了web.config
并将aspNetCompatibilityEnabled
设置为true
。所以,该服务正在ASP.NET兼容模式下运行。当asp.netCompatibilityEnabled设置为false时,WCF OneWay服务变慢
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
的服务有一个OneWay
方法:
[OperationContract(IsOneWay = true)]
void DoWork();
实施看起来是这样的:
public void DoWork()
{
var threadId = Thread.CurrentThread.ManagedThreadId;
Debug.WriteLine("Starting..." + threadId);
Thread.Sleep(TimeSpan.FromSeconds(30));
Debug.WriteLine("Finished..." + threadId);
}
这就像预期。一个人可以发送请求,然后立即返回而无需回答。我可以发送很多请求并立即回复。
但是,如果我改变aspNetCompatibilityEnabled="false"
并设置
[AspNetCompatibilityRequirements(
RequirementsMode = AspNetCompatibilityRequirementsMode.NotAllowed)]
服务类,服务速度变慢。它只能处理3个请求,而第4个只能等待。该服务不会立即返回。看起来,它一次只能处理3个请求。
什么解释了这种行为?每个设置都是默认设置,没有什么特别的设置在web.config
。
当时的服务,并它aspNetCompatibility设置为false – BipinR
是的,没错,这就是点之前处理超过3个请求。 –