遇到致命错误。库'libhostpolicy.so'需要

时间:2017-11-14 11:56:45

标签: docker .net-core

我正在运行dotnet core 2.0控制台项目。 尝试从Docker运行时遇到以下错误。

  

遇到致命错误。库'libhostpolicy.so'需要   在'/ app'中找不到执行应用程序。

9 个答案:

答案 0 :(得分:3)

经过一段时间的谷歌后,我发现了这一点:
https://github.com/aspnet/aspnet-docker/issues/301

  

我不确定是什么造成的,但似乎已经消失了。它的   可能是因为我有一个appSettings.json的案例不匹配而不是   appsettings.json,这意味着文件没有被加载。   但是可怕的错误。

在我的情况下,我忘了把appsettings.json复制到版本上。

enter image description here

希望这可以帮助其他人并在谷歌搜索中获得更高的收益。

答案 1 :(得分:1)

经过更多的谷歌搜索后,我们找到了这个链接:

http://szahariev.blogspot.co.nz/2016/10/libhostpolicyso-was-not-found-error.html

这使我们发现我们以某种方式设法从我们的.csproj文件中手动删除(在我们的例子中)<OutputType>Exe</OutputType>行。所以根本没有创建 runtimeconfig.json

答案 2 :(得分:0)

对我来说,必须将以下行添加到项目文件的 PropertyGroup 部分中来达到目的:

<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>

Project file excerpt

答案 3 :(得分:0)

就我而言,我在Linux的{​​{1}}计算机上收到此错误。已通过正确安装WorkerService及其.Net Core来解决。

答案 4 :(得分:0)

ab_errors = df.loc[(df['a'] > df['b'])] bc_errors = df.loc[(df['b'] > df['c'])] 顶部,我还必须用GenerateRuntimeConfigurationFiles替换<TargetFramework>netstandard2.1</TargetFramework>

所以可能与.NET SDK版本安装有关。

答案 5 :(得分:0)

以上对我都没有帮助,但我的情况有所不同:我的项目是一个 aspnet 核心 3.1 webapi。我按照 tutorial 的说明操作并看到此错误消息。一段时间后,我想到将 dockerfile 中的基本映像从 microsoft/aspnetcore:2.0 更改为 mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime,类似于 MS 页面上关于 ASP.NET docker 映像的 hint核心和错误消失了。 所以我想说这个错误的根本原因可能是一个不兼容的基础镜像。

答案 6 :(得分:0)

所以上述答案都不适合我,但我终于找到了问题,它出在 API 的 .csproj 文件中,导致托管 API 的 docker 容器不以消息开头主题标题。

这是在 PropertyGroup 节点中添加的行,大概是在有人为 Windows 发布文件,然后签入更新的 .csproj 时

<RuntimeIdentifier>win-x64</RuntimeIdentifier>

事实证明这是一个发布选项。删除它会将项目设置为默认值可移植(在 UI 中),如果明确指定,则该值在文件中为“任何”。删除上面的行为我解决了问题。

编辑

顺便提一下,我可以通过将 Dockerfile dotnet publish args 更改为:

RuntimeIdentifier

重要的部分是为 alpine-linux 添加了 win-x64RUN dotnet publish ./src/API.csproj --self-contained --runtime linux-musl-x64 --configuration Release --output /app/publish ...这个镜像:--self-contained

此构建映像为 --runtime linux-musl-x64

答案 7 :(得分:0)

就我而言,问题是指定要运行的 .dll 不正确(库而不是 Web 应用程序)。

首先我成功启动服务

dotnet publish "MyProject.csproj" -c Release -o D:\publish --self-contained --runtime linux-x64

并在日志中看到一条关于无效 .dll 的消息。

然后我更正了 .dll 并尝试发布独立的和依赖于框架的 - 两者都成功启动。

所以理性可能很棘手。

答案 8 :(得分:0)

与 Docker 无关,但在尝试调试我通过命令行(Azure Func Core 工具)创建的 Azure 核心功能时出现错误。当我尝试创建新的调试器配置时,VS Code 中的 launch.json 没有正确自动生成。然后我使用 Azure Function 扩展重新创建了一个新的 Function App 项目并复制了生成的 launch.json。这个文件对我有用。

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to .NET Functions",
      "type": "coreclr",
      "request": "attach",
      "processId": "${command:azureFunctions.pickProcess}"
    }
  ]
}