InvalidOperationException:タイプ 'Microsoft.AspNetCore.Http.IHttpContextAccessor'のサービスを解決できません


137

私は自分のasp.netコアRC1プロジェクトをRC2に変換し始めましたが、現在IHttpContextAccessor解決されていない問題に直面しました。

簡単にするために、私はVisual Studioテンプレートを使用して新しいASP.NET RC2プロジェクトを作成しましたASP.NET Core Web Application (.Net Framework)。テンプレートで作成されたHomeControllerのコンストラクタを追加したのではなく、

public HomeController(IHttpContextAccessor accessor)
{
}

そして、アプリケーションを起動した後、次のエラーを受け取ります:

InvalidOperationException: 'TestNewCore.Controllers.HomeController'をアクティブにしようとしているときに、タイプ 'Microsoft.AspNetCore.Http.IHttpContextAccessor'のサービスを解決できません。вMicrosoft.Extensions.Internal.ActivatorUtilities.GetService(IServiceProvider sp、Type type、Type requiredBy、Boolean isDefaultParameterRequired)

実際のアプリケーションIHttpContextAccessorでは、_contextAccessor.HttpContext.Authenticationとにアクセスするために、独自のサービスクラスで解決する必要があります_contextAccessor.HttpContext.User。EverethingはRC1で正常に動作します。それでは、RC2であるとどのように想定できますか?


この問題は、次のaspnet GitHubリポジトリで議論されています:github.com/aspnet/Hosting/issues/793
Chris Pickford

回答:


217

IHttpContextAccessorはデフォルトで接続されなくなりました。自分で登録する必要があります

services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();

7
働いています。また、同じストーリーservices.AddScoped<IActionContextAccessor, ActionContextAccessor>()
YuriyP 2016年

6
適切なスコープとは何かに関する公式の推奨事項はありますか?それかSingletonScopedそれともTransient
マークヴィンツェ2016年

9
ああ、それはここで議論されており、複数の人がそれが安全であることを確認していますSingletongithub.com/aspnet/Hosting/issues/793
Mark Vincze

その際、次のエラーが発生しましたInvalidOperationException: Cannot consume scoped service。何か案が ?
ロブステ2017

1
services.AddHttpContextAccessor()マイクロソフトが推奨/推奨する提供されている拡張メソッドの使用については、次の回答を参照してください。
マーティンブリス

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.