我有一个覆盖OnStartProcessingRequest(ProcessRequestArgs args)
. 我想在响应中添加一些标头(在这种方法中我认为是正确的地方?)。我首先尝试了这个:
args.OperationContext.ResponseHeaders.Add(...)
那没有用。然后我尝试了这个:
OperationContext.Current.OutgoingMessageHeaders.Add(...)
那没有用。我尝试在那个傻瓜上添加一个新的 OperationContextScope。它仍然失败。最后我尝试了这个:
HttpContext.Current.Response.AddHeader(...);
该选项有效!(“工作”是指它实际上出现在对客户的响应中。)为什么前两个选项不起作用?
在网上进一步阅读后,我发现
WebOperationContext.Current.OutgoingResponse.Headers.Add(...)
也有效。为什么我们在这个方法中有四个当前上下文?一个人如何知道使用哪一个(在运行时)?哪些在我的[WebGet]
方法中有效?哪些在我的[QueryInterceptor]
方法中有效?保证哪个上下文具有正确的请求标头?(我目前一直在使用 args.OperationContext。)