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