我正在查看AppHostBase.cs
,它有以下内容:
//....
public IContentTypeFilter ContentTypeFilters {
get {return EndpointHost.ContentTypeFilter;}
}
public List<Action<IHttpRequest, IHttpResponse>> PreRequestFilters {
get {return EndpointHost.RawRequestFilters;}
}
public List<Action<IHttpRequest, IHttpResponse, object>> RequestFilters {
get {return EndpointHost.RequestFilters;}
}
public List<Action<IHttpRequest, IHttpResponse, object>> ResponseFilters {
get {return EndpointHost.ResponseFilters;}
}
//....
我阅读了党卫军网站的文件,知道什么是
RequestFilters
和ResponseFilters
。但是为什么有一个PreRequestFilter
与RequestFilters
分开?这是干什么的?我在google上看到了一个用
PreRequestFilters
编写的signalr代码的例子,为什么不直接用RequestFilters
来编写呢?有什么区别? 最佳答案
根据Order of Operations,在dto反序列化之前执行预请求过滤器,然后执行常规请求过滤器。还要注意,请求过滤器是按特定顺序执行的,这取决于它们是作为属性实现的还是通过apphost注册的,还取决于请求过滤器属性的优先级。