0
我有一个WPF客户端使用WCF调用IIS中托管的服务。我的WCF客户端具有AllowCookies ='true',因此IIS正在使用的表单身份验证cookie会自动与每个WCF调用进行传递。这一切都很好。WCF客户端,AllowCookies和清除任何当前的cookie?
但我需要能够清除我的WCF客户端正在缓存的任何窗体身份验证Cookie,以便我的下一个请求未通过身份验证。有没有办法做到这一点?
我有一个WPF客户端使用WCF调用IIS中托管的服务。我的WCF客户端具有AllowCookies ='true',因此IIS正在使用的表单身份验证cookie会自动与每个WCF调用进行传递。这一切都很好。WCF客户端,AllowCookies和清除任何当前的cookie?
但我需要能够清除我的WCF客户端正在缓存的任何窗体身份验证Cookie,以便我的下一个请求未通过身份验证。有没有办法做到这一点?
在WCF客户端,你将有机会获得
HttpContext.Current.Request
现在这个请求对象包含饼干。您可以遍历cookie收集并移除您需要的一个。
的foreach(在Request.Cookies时变种的cookie){//}
在
code project一个极好的制品,其WCF客户端上的cookie解释管理
UPDATE
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
HttpContext的是服务器端的支持,而不是客户端。 – 2012-07-25 06:57:52
是的你是对的。编辑我的答案以反映它 – Anand 2012-07-25 07:12:13