AspNet CoreのHttpContextをコントローラ外に取得する必要があります。古いAspNet 4では、HttpContext.Currentを使用して取得できましたが、新しいAspNetでは削除されているようです。コントローラ外のAspNet Core 1.0.0でHttpContextを取得
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
私はそれを研究し、これは:私が見つけた唯一の回避策は、依存性注入によってIHttpContextAccessorを解決し、それにのHttpContextを求めて、私はアプリケーションの起動中にシングルトンとしてIHttpContextAccessorを追加する必要がありIHttpContextAccessorを注入することです私が見つけた唯一の方法。私はそれをGoogleとIHttpContextAccessorは非常に依存性が高いので、依存関係リゾルバのデフォルトとして削除されました。これを達成する他の方法はありますか?
編集: 代わりに依存リゾルバにシングルトンとしてそれを追加するので、私は私自身のシングルトンクラスでそれを保存するために、同じ場所でHttpContextAccessorのインスタンスを得ることができるのだろうか?
'HttpContext'をクラスで取得する必要がある場合、' IHttpContextAccessor'を使って何が問題になりますか?あなたのコードはうまくいく(コンストラクタインジェクションを使うだけで)。 –
しかし、それが機能するためには、IHttpContextAccessorを依存関係として追加する必要があります。私はその同じ場所でインスタンスを直接取得できないのだろうか?私は質問を編集します。 – yosbel
@ademcaglinそれで、それを達成する方法であるようです。さて、サービスに追加してDIで取得する代わりに、インスタンスを直接取得することは可能ですか?私がDIにそれを加えることができれば、同じ場所でそれを得ることができるはずです。それは...ですか? – yosbel