gpt4 book ai didi

postgresql - 应用程序无法在 docker 中运行,无法加载文件或程序集 'System.Runtime.CompilerServices.Unsafe

转载 作者:行者123 更新时间:2023-11-29 12:23:21 28 4
gpt4 key购买 nike

我一直在开发一个应用程序,它一直没有问题。当我尝试将它部署到 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

我不知道这里可能出了什么问题,我知道该项目可以在其他机器上运行。我觉得这些知识可能有用: - postgres 服务器是具有另一个 Docker 容器的同一台 Ubuntu 主机。 - 这是 Dockerfile


FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /app

COPY src/WayUpTo.sln ./src/WayUpTo.sln
COPY src/WayUpTo/WayUpTo.csproj ./src/WayUpTo/WayUpTo.csproj
COPY . ./
RUN cd src; dotnet restore


ARG build=Debug
RUN cd src; dotnet publish --output /app/out --configuration ${build};

# build runtime image
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS runtime
WORKDIR /app
COPY --from=build /app/out ./
ENTRYPOINT ["dotnet", "WayUpTo.dll"]

  • 这是 .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>

基础设施


<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,

  • 这是它在 Docker 上的样子

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.

感谢任何试图帮助我解决这个问题的人,我真的不知道哪里出了问题。

最佳答案

不知何故,是 NuGet 包管理器出了问题。降级到版本 2.2.0 后,它工作了。

关于postgresql - 应用程序无法在 docker 中运行,无法加载文件或程序集 'System.Runtime.CompilerServices.Unsafe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57672852/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com