Postgresql 应用程序在docker中不工作,无法加载文件或程序集';System.Runtime.CompilerServices.Unsafe

Postgresql 应用程序在docker中不工作,无法加载文件或程序集';System.Runtime.CompilerServices.Unsafe,postgresql,docker,asp.net-core,Postgresql,Docker,Asp.net Core,我一直在开发一个应用程序,它一直在毫无问题地工作。当我尝试将它部署到Ubuntu主机上的Docker容器时 形象塑造部分通过得很好。但在docker上运行应用程序时,它会崩溃,出现以下异常 Application startup exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4

我一直在开发一个应用程序,它一直在毫无问题地工作。当我尝试将它部署到Ubuntu主机上的Docker容器时

形象塑造部分通过得很好。但在docker上运行应用程序时,它会崩溃,出现以下异常


    Application startup exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

    File name: 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
       at Npgsql.NpgsqlWriteBuffer.Write[T](T value)
       at Npgsql.FrontendMessages.StartupMessage.WriteFully(NpgsqlWriteBuffer buf)
       at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at Npgsql.NpgsqlConnection.Open()
       at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
       at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureDeleted()
       at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureDeleted()
       at Infrastructure.DatabaseInitializer.Initialize(WayUpToContext dbContext) in /app/src/Infrastructure/WayUpToContext.cs:line 81
       at WayUpTo.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, WayUpToContext dbContext, ApplicationDbContext identityDbContext, UserManager`1 userManager, RoleManager`1 roleManager, IUserService userService, IEventsService eventService, ITrackService trackService, ILectureService lectureService) in /app/src/WayUpTo/Startup.cs:line 200
    --- End of stack trace from previous location where exception was thrown ---
       at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
       at Microsoft.AspNetCore.Mvc.Internal.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
       at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()


    crit: Microsoft.AspNetCore.Hosting.Internal.WebHost[6]
          Application startup exception
    System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

    File name: 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
       at Npgsql.NpgsqlWriteBuffer.Write[T](T value)
       at Npgsql.FrontendMessages.StartupMessage.WriteFully(NpgsqlWriteBuffer buf)
       at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at Npgsql.NpgsqlConnection.Open()
       at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
       at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureDeleted()
       at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureDeleted()
       at Infrastructure.DatabaseInitializer.Initialize(WayUpToContext dbContext) in /app/src/Infrastructure/WayUpToContext.cs:line 81
       at WayUpTo.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, WayUpToContext dbContext, ApplicationDbContext identityDbContext, UserManager`1 userManager, RoleManager`1 roleManager, IUserService userService, IEventsService eventService, ITrackService trackService, ILectureService lectureService) in /app/src/WayUpTo/Startup.cs:line 200
    --- End of stack trace from previous location where exception was thrown ---
       at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
       at Microsoft.AspNetCore.Mvc.Internal.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
       at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()



    Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.

       at Npgsql.NpgsqlWriteBuffer.Write[T](T value)
       at Npgsql.FrontendMessages.StartupMessage.WriteFully(NpgsqlWriteBuffer buf)
       at Npgsql.NpgsqlConnector.Open(NpgsqlTimeout timeout, Boolean async, CancellationToken cancellationToken)
       at Npgsql.NpgsqlConnection.<>c__DisplayClass32_0.<<Open>g__OpenLong|0>d.MoveNext()
    --- End of stack trace from previous location where exception was thrown ---
       at Npgsql.NpgsqlConnection.Open()
       at Npgsql.EntityFrameworkCore.PostgreSQL.Storage.Internal.NpgsqlDatabaseCreator.Exists()
       at Microsoft.EntityFrameworkCore.Storage.RelationalDatabaseCreator.EnsureDeleted()
       at Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureDeleted()
       at Infrastructure.DatabaseInitializer.Initialize(WayUpToContext dbContext) in /app/src/Infrastructure/WayUpToContext.cs:line 81
       at WayUpTo.Startup.Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, WayUpToContext dbContext, ApplicationDbContext identityDbContext, UserManager`1 userManager, RoleManager`1 roleManager, IUserService userService, IEventsService eventService, ITrackService trackService, ILectureService lectureService) in /app/src/WayUpTo/Startup.cs:line 200
    --- End of stack trace from previous location where exception was thrown ---
       at Microsoft.AspNetCore.Hosting.ConventionBasedStartup.Configure(IApplicationBuilder app)
       at Microsoft.AspNetCore.Mvc.Internal.MiddlewareFilterBuilderStartupFilter.<>c__DisplayClass0_0.<Configure>g__MiddlewareFilterBuilder|0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.HostFilteringStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder app)
       at Microsoft.AspNetCore.Hosting.Internal.AutoRequestServicesStartupFilter.<>c__DisplayClass0_0.<Configure>b__0(IApplicationBuilder builder)
       at Microsoft.AspNetCore.Hosting.Internal.WebHost.BuildApplication()
       at Microsoft.AspNetCore.Hosting.Internal.WebHost.StartAsync(CancellationToken cancellationToken)
       at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token, String shutdownMessage)
       at Microsoft.AspNetCore.Hosting.WebHostExtensions.RunAsync(IWebHost host, CancellationToken token)
       at Microsoft.AspNetCore.Hosting.WebHostExtensions.Run(IWebHost host)
       at WayUpTo.Program.Main(String[] args) in /app/src/WayUpTo/Program.cs:line 18

  • 这是.csproj文件
应用核心


    <Project Sdk="Microsoft.NET.Sdk">

      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>

      <ItemGroup>
        <PackageReference Include="FluentValidation.AspNetCore" Version="8.4.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
        <PackageReference Include="NLog" Version="4.6.6" />
      </ItemGroup>

      <ItemGroup>
        <Folder Include="Domain\" />
      </ItemGroup>

    </Project>

  • 这是码头工人的样子

感谢所有试图帮助我解决这个问题的人,我真的不知道会出什么问题。

不知何故,是NuGet软件包经理的过错还是其他原因。在降级到2.2.0版本后,它起了作用


    <Project Sdk="Microsoft.NET.Sdk">

      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>

      <ItemGroup>
        <PackageReference Include="FluentValidation.AspNetCore" Version="8.4.0" />
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
        <PackageReference Include="NLog" Version="4.6.6" />
      </ItemGroup>

      <ItemGroup>
        <Folder Include="Domain\" />
      </ItemGroup>

    </Project>


    <Project Sdk="Microsoft.NET.Sdk">

      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>

      <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="2.2.4" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.2.4" />
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.4" />
        <PackageReference Include="ReflectionIT.Mvc.Paging" Version="3.5.0" />
      </ItemGroup>

      <ItemGroup>
        <ProjectReference Include="..\ApplicationCore\ApplicationCore.csproj" />
      </ItemGroup>

      <ItemGroup>
        <Folder Include="images\" />
      </ItemGroup>

    </Project>

    <Project Sdk="Microsoft.NET.Sdk.Web">

      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
      </PropertyGroup>

      <ItemGroup>
        <PackageReference Include="bootstrap" Version="4.3.1" />
        <PackageReference Include="FluentValidation.AspNetCore" Version="8.4.0" />
        <PackageReference Include="Microsoft.AspNetCore.App" />
        <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.2.3" />
        <PackageReference Include="NLog" Version="4.6.6" />
        <PackageReference Include="NLog.Web.AspNetCore" Version="4.8.4" />
        <PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="2.2.4" />
        <PackageReference Include="Swashbuckle.AspNetCore" Version="4.0.1" />
      </ItemGroup>

      <ItemGroup>
        <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.0.0" />
        <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="2.0.0" />
      </ItemGroup>


      <ItemGroup>
        <ProjectReference Include="..\ApplicationCore\ApplicationCore.csproj" />
        <ProjectReference Include="..\Infrastructure\Infrastructure.csproj" />
      </ItemGroup>
    </Project>


    info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
          User profile is available. Using 'C:\Users\MerceneX\AppData\Local\ASP.NET\DataProtection-Keys' as key repository and Windows DPAPI to encrypt keys at rest.
    info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
          Entity Framework Core 2.2.6-servicing-10079 initialized 'WayUpToContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: None
    info: Microsoft.EntityFrameworkCore.Database.Command[20101]
          Executed DbCommand (33ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
          REVOKE CONNECT ON DATABASE "WayUpTo" FROM PUBLIC;
          SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE datname = 'WayUpTo';
    info: Microsoft.EntityFrameworkCore.Database.Command[20101]
          Executed DbCommand (136ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
          DROP DATABASE "WayUpTo";
    info: Microsoft.EntityFrameworkCore.Database.Command[20101]
          Executed DbCommand (294ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
          CREATE DATABASE "WayUpTo";
    info: Microsoft.EntityFrameworkCore.Database.Command[20101]
          Executed DbCommand (32ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
          CREATE TABLE "Users" (
              "Id" text NOT NULL,
              "Name" text NULL,


    info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
          User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
    info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[58]
          Creating key {c22d14a8-e304-4085-accd-fb38dcce5270} with creation date 2019-08-27 10:33:28Z, activation date 2019-08-27 10:33:28Z, and expiration date 2019-11-25 10:33:28Z.
    warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
          No XML encryptor configured. Key {c22d14a8-e304-4085-accd-fb38dcce5270} may be persisted to storage in unencrypted form.
    info: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[39]
          Writing data to file '/root/.aspnet/DataProtection-Keys/key-c22d14a8-e304-4085-accd-fb38dcce5270.xml'.
    info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
          Entity Framework Core 2.2.6-servicing-10079 initialized 'WayUpToContext' using provider 'Npgsql.EntityFrameworkCore.PostgreSQL' with options: None
    Application startup exception: System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified.