私は、WCFリクエストでメッセージヘッダからデータを取り出すインターセプタを持っています。以下を参照してください:HttpContext.Current.ItemsにアクセスするWCFで静的メソッドを使用できますか?
public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext)
{
_CurrentRequest = request;
SetupSecurityPrincipal();
ThreadExtension.PersonID = GetIntHeader(HeaderKeys.PersonID);
return null;
}
ThreadExtension
(何を意味する、名前を無視して)HttpContext.Current
に設定GETを提供/静的プロパティを持つクラスです。以下を参照してください:
public class ThreadExtension
{
public static int? PersonID
{
get { return (int?)HttpContext.Current.Items["PersonID"]; }
set { HttpContext.Current.Items["PersonID"] = value; }
}
}
私たちは別の1人のデータが得られ、一緒に十分近く起こる2つの要求を持っているのであれば、問題は、私たちのWCFのWebサービスへの当社ウェブ端からの要求、ThreadContext
の変更で、時々の情報にあります人のセッション。
私の質問は何ですか?静的プロパティの使用は適切なアプローチではありませんか?理想的には、WCFの要求に結びついているものだけが必要なので、いつでもデータを渡すことなく数箇所で取得できます。
ご提供いただけるアドバイスやアドバイスをいただければ幸いです。
なぜそのプロパティはセッションに依存しているのでしょうか? – Yahia
私たちは、すべての呼び出しで値を渡すことなく、その1人の呼び出しの生存期間にわたってこれらの値にアクセスしようとしています。私はこの間違いを考えているかもしれませんが、私の印象は静的なプロパティはHttpContextへのパススルーです。より良い方法がありますか? –
WCFでセッションを使用していますか(netTCPバインディングなど)? 「PersonID」を通話中にどのように関連づけていますか? 'HttpContext.Current.Items [" PersonID "]'を直接使用しない理由は何ですか? – Yahia