プロジェクトMVC4のC#4.5でHttpContext.Currentにアクセスできません
プロジェクトにSystem.Webへの参照を追加し、コントローラーページにusing命令を追加しました...
しかし、私はcurrentHandlerにのみアクセスできます...
var context = HttpContext.CurrentHandler; //Current
HttpContext.Current
はC#4.5では非推奨ですか?
私はこのヘルプページを見ました: http://msdn.Microsoft.com/en-us/library/system.web.httpcontext.aspx
アプリケーションにSystem.Web
アセンブリを含めましたか?
using System.Web;
そうでない場合は、System.Web
名前空間を指定してみてください。例:
System.Web.HttpContext.Current
これは、HttpContext
という名前のコントローラーのプロパティを参照しているためです。現在のコンテキストにアクセスするには、完全なクラス名を使用します。
System.Web.HttpContext.Current
ただし、ASP.NET MVCでこのようなコンテキストにアクセスすることは強く推奨されないため、ASP.NET MVC内でSystem.Web.HttpContext.Current
を非推奨と考えることができます。現在のコンテキストにアクセスする正しい方法は
this.ControllerContext.HttpContext
または、コントローラー内にいる場合は、メンバーを使用してください
this.HttpContext
ここで混乱を緩和するために少し追加します。 Darren Daviesの(受け入れられた)答えはもっと単純ですが、Andreiの答えはMVCアプリケーションに対してより良いアプローチだと思います。
Andreiからの答えは、System.Web.HttpContext.Current
を使用するのと同じようにHttpContext
を使用できることを意味します。たとえば、これを行う場合:
System.Web.HttpContext.Current.User.Identity.Name
代わりにこれを行う必要があります:
HttpContext.User.Identity.Name
どちらも同じ結果を達成しますが、(=)-MVCの観点から、後者がより推奨されます。
この問題に関する別の有益な情報も、ここにあります。 MVC ASP.NETのHttpContext.CurrentとController.Contextの違い 。