c# - WCF独自のEndpointBehavior読み取りクライアントセッション

原文 c# wcf wcf-sessions

IClientMessageInspectorメソッドが実装されたBeforeSendRequest()インターフェイスがあります。
このメソッドでは、クライアントに設定されているSessionオブジェクトを取得します。何かのようなもの。

    public object BeforeSendRequest(ref Message request, IClientChannel channel)
    {
        //Instantiate new HeaderObject with values from ClientContext;
        var dataToSend = new MyCustomHeader
            {
                MyValue = HowDoIGetClientSession["abcValue"];
            };

        var typedHeader = new MessageHeader<CustomHeader>(dataToSend);
        var untypedHeader = typedHeader.GetUntypedHeader("custom-header", "s");

        request.Headers.Add(untypedHeader);
        return null;
    }


this questionとよく似たものが必要だと思います。
答え
クライアントアプリケーションとWCFサービスの両方が同じアプリケーション(実際にはIISの仮想アプリケーション)でホストされている場合は、セッション状態を共有できます。

ただし、WCF内でASP.Net互換モードを有効にする必要があります(これを参照:https://msdn.microsoft.com/en-us/library/ms752234.aspx)

アプリケーションが別のアプリケーションでホストされている場合でも、ホストすることはできますが、セッションステートサーバーなどのセッションには外部ストレージを使用する必要があります(詳細はhttps://msdn.microsoft.com/en-us/library/ms178586%28v=vs.140%29.aspxを参照)。

手順は同じですが、両方のweb.configファイルで同じセッションストレージを設定する必要があります。

それが役に立てば幸い。
関連記事

c# - Convert.ChangeType()が日付文字列(dd / MM / yyyy形式)を日時タイプに変換しないのはなぜですか?

c# - 辞書からnull可能値を削除し、型を再キャストする

c# - C++からC#への複雑な構造体のマーシャリング

c# - C#:テキストファイルへの変数の挿入

c# - エンティティフレームワークで作成されたデータベースからヘルパーのドロップダウンリストにアイテムをロードする

c# - Web APIのリクエストに一致する複数のアクションが見つかりました

c# - 日付ピッカーのドロップダウンリストから日付を無効にする

c# - TFSがビルドのgit reposを複製しているときのAppDomainUnloadedException

c# - SQL例外をスローするASP.Netフォーム

c# - 負の角度でも正の値を返すPIDコントローラー