我正在寻找有关WCF REST入门套件中的RequestInterceptor如何工作的一些技术信息,但我找不到我想要的东西。我们来看看自定义服务主机工厂的代码片段:
protected override System.ServiceModel.ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
{
var host = (WebServiceHost2)base.CreateServiceHost(serviceType, baseAddresses);
var authenticationProvider = Container.TryGetInstance<IAuthenticationProvider>();
var authorizationRepository = Container.TryGetInstance<IUserFinder>();
if (authenticationProvider == null)
authenticationProvider = new DefaultAuthenticationProvider(authorizationRepository);
var securityContext = new SecurityContext();
host.Interceptors.Add(new AuthenticationInterceptor(authenticationProvider, securityContext));
return host;
}
该代码inCreateServiceHost方法只执行一次。
然而,在每个HTTP请求上都会执行AuthenticationInterceptor。正如您所看到的,AuthenticationInterceptor依赖于SecurityContext类和IUserFinder存储库。
当多个HTTP请求同时发生时会发生什么?
答案 0 :(得分:0)
我自己找到了它。似乎对于给定的请求,在处理下一个请求之前,所有RequestInterceptors都以线程安全的方式运行。所有请求都排队,直到第一个请求完成所有请求拦截器。