我嘗試在Startup.cs
文件中使用Configure
方法中的自定義DbContext時收到以下異常。我使用ASP.NET核心版本2.0.0-preview1-005977ASP.NET Core 2中的依賴注入拋出異常
未處理的異常:System.Exception的:無法解析類型的服務「Communicator.Backend.Data.CommunicatorContext」爲參數「的DbContext」類型爲'Communicator.Backend.Startup'的方法'Configure'。 ---> System.InvalidOperationException:無法解析根提供程序的範圍服務'Communicator.Backend.Data.CommunicatorContext'。
當我嘗試接收其他實例時,也會拋出此異常。
未處理的異常:System.Exception的:無法解析型 'Communicator.Backend.Services.ILdapService'
...
這裏是我的ConfigureServices
和Configure
方法的服務。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<CommunicatorContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddCookieAuthentication();
services.Configure<LdapConfig>(Configuration.GetSection("Ldap"));
services.AddScoped<ILdapService, LdapService>();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, CommunicatorContext dbContext, ILdapService ldapService)
{
app.UseAuthentication();
app.UseWebSockets();
app.Use(async (context, next) =>
{
if (context.Request.Path == "/ws")
{
if (context.WebSockets.IsWebSocketRequest)
{
WebSocket webSocket = await context.WebSockets.AcceptWebSocketAsync();
await Echo(context, webSocket);
}
else
{
context.Response.StatusCode = 400;
}
}
else
{
await next();
}
});
app.UseMvc();
DbInitializer.Initialize(dbContext, ldapService);
}
我做了第一次改變,它的工作原理。謝謝 –
謝謝,這解決了我的問題。如果我可以添加更多,在測試這兩個選項之後,我發現我仍然需要修改'ConfigureServices'以返回'void'(默認情況下)以返回'IServiceProvider',以便使第二個選項正常工作。 – muhihsan