使用 WCF 客户端 + cookie 进行 Web 服务调用

Posted

技术标签:

【中文标题】使用 WCF 客户端 + cookie 进行 Web 服务调用【英文标题】:Making web service calls with WCF client + cookies 【发布时间】:2014-01-24 17:40:50 【问题描述】:

WCF Service. 中实现Basic security Authentication

设法从网络服务获取.ASPXCookie。但是,如何将收到的 cookie 传递回下一个请求?

var authClient = new MovieDbClient();
using (new OperationContextScope(authClient.InnerChannel))

    isValid = authClient.Login("userName", "passWord*");
    if (isValid)
    
        var response = (HttpResponseMessageProperty)OperationContext.Current.IncomingMessageProperties[HttpResponseMessageProperty.Name];
        sharedCookie = response.Headers["Set-Cookie"];
    

我尝试打印SharedCookie 并且成功了。 它看起来像,

".ASPXAUTH=E499CA76EAC178A96BE5CA1E314CC90E0A6F9B95AD221EF5AD7D43598E701DC034D40904DBB8ECFBFB3EA21F2597D3C8DAB9B19A0491FD5858E9F0A4B6DC6E6A980FBB4CCADE191855A029CF8236C6890BEE28665C236992632807D1021AA138; expires=Tue, 07-Jan-2014 06:22:22 GMT; path=/; HttpOnly"

问题是how do I pass this cookie information in my next request using wCF Client - authClient

【问题讨论】:

【参考方案1】:

如果您已经拥有 cookie 字符串,则在当前上下文中向 WCF 请求添加 Cookie 标头:

var prop = new HttpRequestMessageProperty();
prop.Headers.Add(HttpRequestHeader.Cookie, sharedCookie);
OperationContext.Current.OutgoingMessageProperties.Add(HttpRequestMessageProperty.Name, prop);

【讨论】:

效果很好。像一个魅力。非常感谢。 请注意,只有在 app.config ServiceModel 的绑定中没有将标志“AllowCookies”设置为“true”时,Nicholas W 的出色解决方案才有效!!! > wiktorzychla.com/2011/11/managing-cookies-in-wcf-client.html

以上是关于使用 WCF 客户端 + cookie 进行 Web 服务调用的主要内容,如果未能解决你的问题,请参考以下文章

cookie和session

如何在 ASP.Net MVC 应用程序中使用来自 WCF 身份验证服务的身份验证 cookie

WCF 服务 maxReceivedMessageSize basicHttpBinding 问题

webservice该怎么进行学习?

学习Cookie的基础知识

WCF Cookie处理