68


18

私はMVC ASP .NETアプリケーションに取り組んでいます。 私はどちらも比較的新しいです。

コントローラで、私はユーザーの現在のログオンを取得しようとしていますが、これを行うには2つの方法があるようです。

System.Web.HttpContext.Current.User.Identity.Name

または

HttpContext.User.Identity.Name

これらの違いは何ですか? 私がMVCフレームワークの中で言うことができる限り、コントローラは現在のHttpContextをプロパティとして格納しているので、これらのメソッドは同じです。 あれは正しいですか?

2 Answer


88


はい、彼らは通常同一になります。 ただし、追加のスレッドを使用している場合、それらは処理されません。 `+ System.Web.HttpContext.Current +`はスレッド静的です。


24


(静的なHttpContext.Currentではなく)コントローラによって提供されるコンテキストは疑いの余地があります。 コードの単体テストに興味がある場合は、HttpContext.Currentを使用するよりも、モックのControllerContextを作成してControllerに設定する方がはるかに簡単です。 それ以外の場合、ControllerContext.HttpContextはHttpContext.Currentと同じデータを指します。