【问题标题】:Could not resolve a service of type 'EntityFrameworkCore.DbContextOptions`1[Db] for the parameter 'identityDbContextOptions' of method 'Configure'无法为方法“Configure”的参数“identityDbContextOptions”解析“EntityFrameworkCore.DbContextOptions`1[Db] 类型的服务”
【发布时间】:2020-12-18 19:56:00
【问题描述】:

首先,这个项目现在在 Windows 上成功运行,并且在上次更新之前在 Linux 主机上成功运行。更新新版本后我收到错误:

Frontend[30348]:  ---> System.IO.FileLoadException: Could not load file or assembly 'Pomelo.EntityFrameworkCore.MySql, Version=3.1.2.0, Culture=neutral, PublicKeyToken=2cc498582444921b'. The located assembly's manifest definition does not match the assembly reference. (0x80131040)
Frontend[30348]: File name: 'Pomelo.EntityFrameworkCore.MySql, Version=3.1.2.0, Culture=neutral, PublicKeyToken=2cc498582444921b'
Frontend[30348]:    at Frontend1.Startup.<>c.<ConfigureServices>b__9_0(DbContextOptionsBuilder options)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass1_0`2.<AddDbContext>b__0(IServiceProvider p, DbContextOptionsBuilder b)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.CreateDbContextOptions[TContext](IServiceProvider applicationServiceProvider, Action`2 optionsAction)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.EntityFrameworkServiceCollectionExtensions.<>c__DisplayClass10_0`1.<AddCoreServices>b__0(IServiceProvider p)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitFactory(FactoryCallSite factoryCallSite, RuntimeResolverContext context)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSiteMain(ServiceCallSite callSite, TArgument argument)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.VisitDisposeCache(ServiceCallSite transientCallSite, RuntimeResolverContext context)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteVisitor`2.VisitCallSite(ServiceCallSite callSite, TArgument argument)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteRuntimeResolver.Resolve(ServiceCallSite callSite, ServiceProviderEngineScope scope)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.DynamicServiceProviderEngine.<>c__DisplayClass1_0.<RealizeService>b__0(ServiceProviderEngineScope scope)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.GetService(Type serviceType, ServiceProviderEngineScope serviceProviderEngineScope)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.GetService(Type serviceType)
Frontend[30348]:    at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType)
Frontend[30348]:    at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
Frontend[30348]:    --- End of inner exception stack trace ---
Frontend[30348]:    at Microsoft.AspNetCore.Hosting.ConfigureBuilder.Invoke(Object instance, IApplicationBuilder builder)
Frontend[30348]:    at Microsoft.AspNetCore.Hosting.ConfigureBuilder.<>c__DisplayClass4_0.<Build>b__0(IApplicationBuilder builder)
Frontend[30348]:    at Microsoft.AspNetCore.Hosting.GenericWebHostBuilder.<>c__DisplayClass13_0.<UseStartup>b__2(IApplicationBuilder app)
Frontend[30348]:    at Microsoft.AspNetCore.Mvc.Filters.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
Frontend[30348]:    at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
Frontend[30348]:    at Microsoft.AspNetCore.Hosting.GenericWebHostService.StartAsync(CancellationToken cancellationToken)
Frontend[30348]: Unhandled exception. System.Exception: Could not resolve a service of type 'Microsoft.EntityFrameworkCore.DbContextOptions`1[[NewDb.Models.ApplicationDbContext, NewDb, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' for the parameter 'identityDbContextOptions' of method 'Configure' on type 'Frontend1.Startup'.

这是什么意思?

  1. 我将我的项目作为二进制文件部署到主机。托管中存在的所有 NET CORE 库。还可以重定向到项目文件中的另一个库版本(并且存在结果文件 Frontend.dll.config)。

  2. 我与我的数据库定义共享库,该定义共享了大约 10 个项目。在具有数据库定义的项目中,我只有 POCO 类。具有 DB 定义的库位于项目文件夹中。主机中还存在带有连接字符串的 application.json。

  3. 在项目中我有这个配置。现在这个配置在 Windows 中完美运行,并且在 Linux 主机上也可以使用以前的版本。

     services.AddDbContext<ApplicationDbContext>(
         (Microsoft.EntityFrameworkCore.DbContextOptionsBuilder options) =>
         options.UseMySql(Configuration.GetConnectionString("DefaultConnection"),
         (Microsoft.EntityFrameworkCore.Infrastructure.MySqlDbContextOptionsBuilder mySqlOption) =>
         {
             mySqlOption.CommandTimeout(10);
             mySqlOption.EnableRetryOnFailure(10);
         }),
         ServiceLifetime.Transient, ServiceLifetime.Transient);
    
     services.AddIdentity<ApplicationUser, IdentityRole>(options =>
     {
         options.Password.RequiredLength = 4;
         options.Password.RequireUppercase = false;
         options.Password.RequireLowercase = false;
         options.Password.RequireUppercase = false;
         options.Password.RequireNonAlphanumeric = false;
         options.SignIn.RequireConfirmedEmail = true;
    
     }).AddEntityFrameworkStores<ApplicationDbContext>()
     .AddDefaultTokenProviders();
    

【问题讨论】:

    标签: mysql linux asp.net-core dependency-injection entity-framework-core


    【解决方案1】:

    我已经从 C:\Users\khark.nuget\packages\pomelo.entityframeworkcore.mysql\3.1.2 上传了库(而不是发布项目的目录)并且项目正在提升。

    【讨论】:

      猜你喜欢
      • 2020-04-06
      • 2019-03-26
      • 2019-07-01
      • 2022-11-22
      • 2023-01-30
      • 1970-01-01
      • 2020-08-16
      • 2022-01-10
      • 2020-03-13
      相关资源
      最近更新 更多