[英]Injecting services in to the MainLayout.cs in Server-side Blazor
正如標題所暗示的,我正在嘗試將服務注入 Blazor 服務器端的MainLayout
頁面。 該服務是一個像這樣注入的 ApplicationDbContext:
@inject ApplicationDbContext context
並像這樣注冊:
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(
Configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient);
但是,我收到System.ObjectDisposedException
異常。
System.ObjectDisposedException: '無法訪問已處理的對象。 此錯誤的一個常見原因是處理從依賴注入解析的上下文,然后嘗試在應用程序的其他地方使用相同的上下文實例。 如果您在上下文上調用 Dispose() 或將上下文包裝在 using 語句中,則可能會發生這種情況。 如果你使用依賴注入,你應該讓依賴注入容器來處理上下文實例。 對象名稱: “ApplicationDbContext” 。
第一個頁面加載沒問題,但之后,它會引發此錯誤。 這也會發生在布局頁面中嵌套的任何組件上,但似乎不會發生在頁面本身上。
我通過這樣做解決了這個問題。
services.AddDbContext<ApplicationDbContext>(options =>
options.UseNpgsql(
Configuration.GetConnectionString("DefaultConnection")), ServiceLifetime.Transient);
@inherits OwningComponentBase<ApplicationDbContext>
代替
@inject ApplicationDbContext context
我希望這可以幫助某人。 討論此問題的票證是AspNetCore存儲庫中的#10448 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.