0

IISでホストされているサービスを呼び出すためにWCFを使用しているWPFクライアントがあります。私のWCFクライアントにはAllowCookies='true'があるため、IISが使用しているフォーム認証Cookieは、各WCF呼び出しで自動的にやり取りされます。これはすべて問題なく機能します。

ただし、次の要求が認証されないように、WCFクライアントがキャッシュしているフォーム認証Cookieをクリアする機能が必要です。これを行う方法はありますか?

4

1 に答える 1

1

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();
}

ここでこの例を見つけました

于 2012-07-24T07:36:11.293 に答える