【问题标题】:Is there any way to access cookie values from a WCF Web Service method?有什么方法可以从 WCF Web 服务方法访问 cookie 值?
【发布时间】:2012-12-01 07:31:15
【问题描述】:

我正在将我的 Web 服务从 .ASMX 切换到 .SVC,但是其中一些依赖于 HTTP 请求中传入的 cookie 值。

对于 WCF Web 服务,HttpContext.Current 为空。您可以通过将aspNetCompatibilityEnabled 设置为true 来更改此设置,但是此设置与我也想使用的 IIS7 上的集成管道模式不兼容。

WCF 是否实现了一些很酷的现代访问 cookie 的新方法?

【问题讨论】:

  • WCF 是否实现了一些很酷的新现代方式来访问 cookie? 不。这听起来像是臭名昭著的 WCF 陷阱之一。
  • @dbaseman - 是的,我读的越多,我就越了解我运气不好..叹息..

标签: c# .net wcf web-services cookies


【解决方案1】:

WCF 是否实现了一些很酷的访问 cookie 的新现代方式?

WCF 确实有一种访问 cookie 的方法,但我不知道我是否称它为“酷新现代”。本质上,在您的服务操作中,您可以访问WebOperationContext.Current.IncomingRequest.Headers[HttpRequestHeader.Cookie] 属性,这将为您提供客户端发送的Cookie 标头的值 - 作为字符串。此时,您可以随意解析它。

【讨论】:

  • 谢谢!标记为答案,因为这在技术上满足了我的问题。但是,我决定重新考虑 Web 服务以不使用 cookie,从我的研究来看,这似乎是一个更建议的设计。
  • 哦,你也写了this 博文吧?我实际上正在为此使用您的代码!我确实发现了一个错误,我把它留在了 Q&A 下(在 imaudi 下)..
  • 我也面临同样的问题,我尝试了这里提到的所有解决方案。但在我的情况下,WebOperationContext.Current.IncomingRequest.Headers 没有名为 cookie 或类似名称的键。请帮忙
【解决方案2】:

除了正确答案之外,您还需要确保将绑定的 allowCookies 属性设置为 false。

如果设置为 true,WCF 将接管 cookie 管理并在 cookie 到达您的代码之前将其从标头中删除。 见MSDN Forum

(抱歉,还不能评论。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多