WCF客户端,AllowCookies和清除任何当前cookie?

时间:2012-07-24 06:49:27

标签: wcf cookies forms-authentication

我有一个WPF客户端,它使用WCF调用IIS中托管的服务。我的WCF客户端具有AllowCookies ='true',因此IIS正在使用的表单身份验证cookie会自动与每个WCF调用来回传递。这一切都很好。

但我需要能够清除我的WCF客户端缓存的任何表单身份验证cookie,以便我的下一个请求未经过身份验证。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

在wcf客户端上,您可以访问

 HttpContext.Current.Request

现在这个Request对象包含cookie。你可以遍历cookie集合并删除你需要的那个。

  

foreach(request.Cookies中的var cookie){//}

code project上的一篇优秀文章解释了WCF客户端上的cookie管理

<强>更新

HttpContext仅在服务器端可用,因此我之前的答案不正确,如Phil指出的那样。

这样做的正确方法会非常笨拙,因为你已经掌握了HttpRequest本身

MyWebServiceClient client = new MyWebServiceClient();


using ( new OperationContextScope( client.InnerChannel ) )
{
    HttpRequestMessageProperty request = new HttpRequestMessageProperty();
    //get the instance of your AuthCookie and make it blank
    request.Headers["AuthCookie"] = "";

    OperationContext.Current.OutgoingMessageProperties[
        HttpRequestMessageProperty.Name] = request;

    client.InvokeSomeMethod();
}

找到此示例here