mssqlとエンティティのフレームワークに裏打ちされたAPIを作成しようとしています。dotnetコアエンティティのフレームワークの接続が閉じていません
フロントエンドに接続するまでは、すべてうまくいくようです。
最初に終了するAPIに応じて、System.InvalidOperationException: The connection was not closed. The connection's current state is open.
またはSystem.InvalidOperationException: Invalid operation. The connection is closed.
という例外が発生します。ここで
services.AddScoped<INotificationRepository, NotificationRepository>();
をスコープとしている
services.AddDbContext<ApplicationContext>(opt => {
opt.UseSqlServer(new SqlConnection(Configuration["CONNECTIONSTRINGS_AZURECONNECTION"]), builder => builder.MigrationsAssembly("Application.Web"));
opt.UseOpenIddict();
});
services.AddIdentity<User, Role>()
.AddEntityFrameworkStores<ApplicationContext, Guid>()
.AddDefaultTokenProviders();
クローム図であるデータベースコンテキスト
ですservices.AddScoped<ApplicationContext, ApplicationContext>();
の
両方のコントローラは基本的に私は、コンテキストは、要求ごとにスコープする必要があることを考えるに訂正同じ
private readonly INotificationRepository _notificationRepository;
public NotificationsController(UserManager<User> userManager, INotificationRepository notificationRepository)
:base(userManager)
{
_notificationRepository = notificationRepository;
}
[HttpGet]
public async Task<IActionResult> GetAsync()
{
var user = await GetCurrentUserAsync();
return new OkObjectResult(await _notificationRepository.FindByAsync(n => n.User == user));
}
アムですか? そして、各クロムコールは別のスコープを作成する別々のリクエストですか?
したがって、各呼び出しは基本的に次のようになります。
要求
認証フィルタ
コントローラ
非同期機能
非同期現在のuを取得SER - コントローラ
Googleはので、私は私が仮定何の助けではありませんからリポジトリ
リターンから>リターンユーザー(コンテキストを破棄いけない)
非同期リポジトリ機能
リターン間違って何かをしている: