8

HttpRequestIISパイプラインの前の段階で実行されるコードがオブジェクトを接続し、後の段階で実行されるコードがオブジェクトを取得して使用できるように、IISカスタムモジュールによって処理されているものにカスタムデータを何らかの方法で添付する必要があります。他の機能はありません。 IISパイプライン処理の範囲は、そのオブジェクトを追加することによって変更されます。

データは1つのHTTPリクエスト内でのみ保持する必要があります-リクエスト間でデータを保存する必要はありません。新しいリクエストごとに自動的に「リセット」する必要があります。これにより、新しいリクエストが来たときに、前のリクエストに添付されたコードにオブジェクトが含まれなくなります。

HttpContext.Itemsその目的のMSDNの説明はあまり明確ではありませんが、行く方法のように見えます。

HttpContext.Current.Items私の問題を解決する方法を使用していますか?

4

1 に答える 1

6

これはうまくいくはずです-私は以前にプロジェクトでこれを行いました。

私はこのような静的プロパティを持つクラスを持っています-

public class AppManager
{
    public static RequestObject RequestObject
    {
        get
        {
            if (HttpContext.Current.Items["RequestObject"] == null)
            {
                HttpContext.Current.Items["RequestObject"] = new RequestObject();
            }

            return (RequestObject)HttpContext.Current.Items["RequestObject"];
        }
        set { HttpContext.Current.Items["RequestObject"] = value; }
    }
}

そして、RequestObjectにはすべてのカスタムデータが含まれているので、アプリで実行できます

AppManager.RequestObject.CustomProperty

これまでのところ、HttpContext.Itemsの動作に問題は発生していません。

于 2012-05-14T12:21:18.290 に答える