如何解决在WCF中是否可以通过WS2007FederationHttpBinding支持HTTP Cookies?
我们需要启用在启用了粘性的AWS的Application Load Balancer上使用WS2007FederationHttpBinding的WCF客户端。
Client --> ALB --> Server1,Server2
ALB每次都附加一个ALB cookie,以便客户端在会话期间始终可以与同一台服务器通信。客户端在每个会话中执行几次往返,并且每次可以接收ALB cookie,但在发出后续请求时却无法将其发送回,就好像它根本不在乎HTTP Cookies。有没有一种方法可以使用WS2007FederationHttpBinding在WCF客户端上启用HTTP Cookies?
解决方法
我们可以通过控制http标头在WCF客户端中使用Cookie:
using ( new OperationContextScope( client.InnerChannel ) )
{
HttpRequestMessageProperty request = new HttpRequestMessageProperty();
request.Headers["Cookie"] = "value";
OperationContext.Current.OutgoingMessageProperties[
HttpRequestMessageProperty.Name] = request;
client.Test();
}
我们直接与与Web服务交换的HTTP消息进行交互,在适当的标头中以字符串形式读取和写入Cookie。
对于必须对从客户端应用程序调用的所有Web服务以相同方式管理cookie的情况,最好的选择是通过在WCF中应用非常有用的功能(消息检查器)来选择集中式解决方案。
我们可以在客户端上实现IClientMessageInspector接口来处理cookie,有关如何在WCF客户端中使用cookie的更多信息,您可以参考以下链接:
https://megakemp.com/2009/02/06/managing-shared-cookies-in-wcf/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。