IISでホストされているサービスを呼び出すためにWCFを使用しているWPFクライアントがあります。私のWCFクライアントにはAllowCookies='true'があるため、IISが使用しているフォーム認証Cookieは、各WCF呼び出しで自動的にやり取りされます。これはすべて問題なく機能します。
ただし、次の要求が認証されないように、WCFクライアントがキャッシュしているフォーム認証Cookieをクリアする機能が必要です。これを行う方法はありますか?
IISでホストされているサービスを呼び出すためにWCFを使用しているWPFクライアントがあります。私のWCFクライアントにはAllowCookies='true'があるため、IISが使用しているフォーム認証Cookieは、各WCF呼び出しで自動的にやり取りされます。これはすべて問題なく機能します。
ただし、次の要求が認証されないように、WCFクライアントがキャッシュしているフォーム認証Cookieをクリアする機能が必要です。これを行う方法はありますか?
wcfクライアントでは、にアクセスできます
HttpContext.Current.Request
これで、このRequestオブジェクトにCookieが含まれます。Cookieコレクションをループして、必要なものを削除することができます。
foreach(var cookie in request.Cookies){//}
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();
}
ここでこの例を見つけました