加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 带有HTTP头的DataService中的HttpContext与OperationConte

发布时间:2020-12-15 08:41:46 所属栏目:百科 来源:网络整理
导读:我有一个WCF DataService(v5.2),它覆盖了OnStartProcessingRequest(ProcessRequestArgs args).我想在响应中添加一些标题(在这种方法中我假设它是正确的位置?).我第一次尝试这个: args.OperationContext.ResponseHeaders.Add(...) 那没用.然后我尝试了这个
我有一个WCF DataService(v5.2),它覆盖了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.)

解决方法

不知道ProcessRequestArgs.OperationContext.ResponseHeaders,但我想我可以解释为什么OperationContext.Current.OutgoingMessageHeaders不起作用:“头”有SOAP头(可能忽略非SOAP服务),而不是HTTP头.在另外两种情况下(HttpContext.Current.Response.AddHeader和WebOperationContext.Current.OutgoingResponse.Headers)注意名称中的“Http”和“Web”,表示您正在执行特定于HTTP的操作,即添加HTTP标头.

顺便说说:

> OperationContext – 常规WCF操作上下文
> WebOperationContext – WCF操作上下文的REST / HTTP扩展
> HttpContext – 与ASP.NET托管模型的兼容性,仅在使用ASP.NET compat模式时有效(不适用于自托管等),请参阅http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读