私は、後続のフィルタもアクセスできるrequest.Itemsコレクションにトークンを追加するグローバルフィルタを持っています。AspNetRequestへのアクセス
私が抱えている問題は、要求を保留しようとしているときです。注射されたクラス内にいるときのアイテムです。
この注入されたクラスをアイテム配列にアクセスしようとすると、 var req = HostContext.TryGetCurrentRequest();
アイテムは利用できなくなりました。私はこれがフィルタで提供されたIRequest.Items
配列がAspNetRequest
オブジェクト内のHttpContext.Current.Items
のクローンコピーであるため、私が追加するものはHttpContext.Current.Items
に配置されていないためです。
このような状況で現在のAspNetRequest.Items
配列にアクセスまたは注入するにはどうすればよいですか、またはHttpContext.Current.Items
に直接項目を追加するだけですか?
クローンについてはhttps://github.com/ServiceStack/ServiceStack/blob/master/src/ServiceStack/Host/AspNet/AspNetRequest.cs#L53を参照してください。
ありがとうございます、それは私がフィルタから項目を設定することをカバーしていますが、他の場所からそのAspNetRequestにアクセスする私の方法はありませんか? – dnolan
あなたが何を意味するかわからない、IRequestはServiceStackのどこでも利用できます – mythz
したがって、フィルタでIRequestを取得すると、そのインスタンスは 'AspNetRequest'になります。これは素晴らしいことであり、その後のフィルタでもこの同じインスタンスが表示されます。しかし、私が注入したクラスの中でそれを取り出すと、 'AspNetRequest'の新しいインスタンスのように見えます。これは、' AspNetRequest'の前のインスタンスにアイテムを追加したため、IRequest.AddItem拡張を介して追加したアイテムを失いました'。 AddItemを呼び出すと、そのデータが失われ、基になるHttpContextに渡されないということはちょっと気になります。 – dnolan