0

私はSharpArchitectureで遊んでいますが、インフラストラクチャレイヤでNHibernate用の単純なAuditInterceptorを作成しようとしています。NHibernateインターセプタの現在のリクエストコンテキストへのアクセス

私の問題は、現在のリクエストの詳細をインターセプタ内からアクセスできるようにすることです。これには、現在のユーザーとサーバーがアクティブな要求を受信した日時が含まれます。

何らかのUnitOfWorkパターンを使用する必要がありますか?もしそうなら、InterceptorコードでUnitOfWorkオブジェクトを利用できるようにする良い方法は何ですか?

System.Threading.Thread.CurrentPrincipal.Identity.Name 

私も現在の要求の日付/時刻を取得する必要性を持っていたし、それを作成するのが最善と判断しました:私の知る限り、現在のユーザーを取得するのに最適な場所がある見出したよう

答えて

1

カスタムIPrincipalCurrentDateTimeのプロパティを持っていました。そして、カスタム原則をGlobal.asax OnAuthenticatedまたはMVC ActionFilterのいずれかに設定しました。

+0

ありがとうございます!私がやったことは、アプリケーションの起動時にNHibernateを設定するときに、 "IAuditInfoProvider"オブジェクトをインターセプタコンストラクタに渡すことです。それを実装する方法はまだわかりませんが、少なくともインターセプタコードに影響を与えることなく、後で変更することができます。私はBegin/EndRequestで変更され、私が使用しているIoCコンテナでオブジェクトに注入されるこの(および他の)インターフェイスを実装するカスタムContextオブジェクトを作成することを考えています。私はMVCとSharpArchitectureについて全く知らないので、これは単なるアイデアです。 –

+0

同じ問題に取り組んだとき、私は静的プロパティ/クラスの使用からどのように逃れることができないのか分かりませんでした。スレッドの問題も処理する必要があります。 –

関連する問題