2012-07-24 18 views
0

我有一個WPF客戶端使用WCF調用IIS中託管的服務。我的WCF客戶端具有AllowCookies ='true',因此IIS正在使用的表單身份驗證cookie會自動與每個WCF調用進行傳遞。這一切都很好。WCF客戶端,AllowCookies和清除任何當前的cookie?

但我需要能夠清除我的WCF客戶端正在緩存的任何窗體身份驗證Cookie,以便我的下一個請求未通過身份驗證。有沒有辦法做到這一點?

回答

1

在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

+0

HttpContext的是服務器端的支持,而不是客戶端。 – 2012-07-25 06:57:52

+0

是的你是對的。編輯我的答案以反映它 – Anand 2012-07-25 07:12:13