アクション フィルターで一部のユーザー データを取得しており、そのデータの一部をコントローラーのアクションで使用できますが、フィルターからコントローラーにデータを渡す方法が正確にはわかりません。MVC では、おそらくセッションまたは HttpContext.Items を使用しますが、Web API では使用できません。別のオプションは ThreadStatic を使用することですが、より良い解決策が必要だと思いますか?
12288 次
1 に答える
63
Request.Properties
辞書を使用してそれを行うことができます。
フィルターで:
MyType myObject = //initialize from somwhere
actionContext.Request.Properties.Add("mykey", myObject);
そして、コントローラーでそれを取得できます。
object myObject;
Request.Properties.TryGetValue("mykey", out myObject);
//cast to MyType
このアプローチの利点は、現在のリクエスト インスタンスが Web API パイプラインのどこでも利用できるため、このオブジェクト、つまり Formatter または MessageHandler でもアクセスできることです。
于 2013-02-25T03:05:38.177 に答える