2016-12-20 1 views
1

HttpApplicationの属性はContextです。このクラスはHttpContextです。HttpApplicationクラスとHttpContextクラスの関係は何ですか?

のHttpContextクラスとのHttpApplicationクラスは、ユーザーレスポンス要求として、いくつかの一般的な性質を持っています。 2クラスのこれらのプロパティの違いと関係はなんですか? どのような状況で、私は他のもの以外のものを使うべきですか?

PS:私はちょうど、私のアプリケーションをチェックしているHttpApplication.UserHttpApplication.Context.User同じ値を持っています。

答えて

4

あなたの比較は間違っているようです。

HttpContextは、現在の要求のHTTPプロトコル固有の情報に関連するものしか処理しないためです。

しかし、HttpApplicationには、イベント、メソッド、プロパティなどのASP.NETアプリケーションオブジェクト全体が保持されます。 Contextプロパティがあり、タイプはSystem.Web.HttpContextです。これは、特定のASP.NETアプリケーションに対して行われたすべての要求に対して、HTTP固有の情報をカプセル化するために使用されます。

+0

なぜHttpApplication.UserとHttpApplication.Context.Userの値が同じですか?いつ私はHttpApplication.Context.Userの代わりにHttpApplication.Userを使うべきですか? – kinishinai

0

HttpContext.Userは読み書き可能です。 HttpApplication.Userは読み取り専用です。それが唯一の違いです。あなたはSystem.Webのを分解した場合

あなたはHttpApplication.Userのコードのこのビットを見つけることができます:

public IPrincipal User 
{ 
    get 
    { 
     if (this._context == null) 
     { 
      throw new HttpException(SR.GetString("User_not_available")); 
     } 
     return this._context.User; 
    } 
} 

だから、脇ヌルチェックから、2つのプロパティがまったく同じことを行います。

1

ASP.NETパイプラインとページライフサイクルが何であるかを知る必要があります。次に、2つのクラスの使用が明らかになります。

HttpApplicationは、HTTPモジュールとハンドラをロードするパイプライン実装です。着信要求はそのインスタンスによって処理されます。

HttpContextは、要求メッセージと応答メッセージを保持するコンテキストオブジェクトです。このようなオブジェクトをHttpApplicationの中に渡すことによって、モジュール/ハンドラは何が起こり、いつ飛び込むべきかを簡単に知ることができるように、すべての要求関連データをキャプチャする便利な方法です。

Microsoftが発行した.NET Frameworkリファレンスソースを参照してください。ほとんどの場合、それらはお互いに複製する必要があり、便宜のために存在しています。

関連する問題