Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker ASP.NET核心应用程序突然需要没有更改的新特定版本_Docker_Asp.net Core_Asp.net Core 2.1 - Fatal编程技术网

Docker ASP.NET核心应用程序突然需要没有更改的新特定版本

Docker ASP.NET核心应用程序突然需要没有更改的新特定版本,docker,asp.net-core,asp.net-core-2.1,Docker,Asp.net Core,Asp.net Core 2.1,我有一个ASP.NET核心应用程序在Docker容器(2.1-aspnetcore-runtime)中运行 带应用程序的docker容器在两个月内没有出现任何问题。最近我不得不更新AppSettings中的ConnectionString。因此,我更改了JSON文件并部署了一个新的docker版本 这导致了以下消息: It was not possible to find any compatible framework version The specified framework 'Micr

我有一个ASP.NET核心应用程序在Docker容器(2.1-aspnetcore-runtime)中运行

带应用程序的docker容器在两个月内没有出现任何问题。最近我不得不更新AppSettings中的ConnectionString。因此,我更改了JSON文件并部署了一个新的docker版本

这导致了以下消息:

It was not possible to find any compatible framework version
The specified framework 'Microsoft.AspNetCore.App', version '2.1.6' was not found.
  - Check application dependencies and target a framework version installed at:
      /usr/share/dotnet/
  - Installing .NET Core prerequisites might help resolve this problem:
      http://go.microsoft.com/fwlink/?LinkID=798306&clcid=0x409
  - The .NET Core framework and SDK can be installed from:
      https://aka.ms/dotnet-download
  - The following versions are installed:
      2.1.4 at [/usr/share/dotnet/shared/Microsoft.AspNetCore.App]
为什么应用程序突然需要版本“2.1.6”?应用程序没有改变,两个月前版本“2.1.6”甚至不存在

除此之外,“2.1.6”(2.1.6-aspnetcore-runtime)还有一个特定的Docker容器。为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供

为什么应用程序突然需要版本“2.1.6”?应用程序没有改变,两个月前版本“2.1.6”甚至不存在

这个很容易解释。较新的ASP.NET Core 2.1(及更高版本)模板是使用for
Microsoft.AspNetCore.All
/
Microsofot.AspNetCore.App
软件包生成的

在ASP.NET Core 2.1或更高版本中,可以指定Microsoft.AspNetCore.All包引用,而不指定版本。未指定版本时,SDK(Microsoft.NET.SDK.Web)将指定隐式版本。我们建议依赖SDK指定的隐式版本,而不要在包引用上显式设置版本号。如果您对这种方法有疑问,请在Microsoft.AspNetCore.App隐式版本的讨论中留下GitHub评论

您在csproj中的条目将如下所示

<PackageReference Include="Microsoft.AspNetCore.All" />

而不是

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.1.4" />

这确保每次重建都将使用/拾取系统上可用的最新次要软件包。这适用于便携式应用程序。Self-contained基本上也这样做,但在发布时运行时可用

这就是问题的根源

为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供

在创建/构建(或运行)docker容器之前,您可能没有运行
docker pull microsoft/dotnet:2.1-aspnetcore-runtime


如果您不这样做,它将使用本地标记的最新版本(但不是docker hub上该标记可用的最新版本),因为
microsoft/dotnet:2.1-aspnetcore-runtime
在发布时将指向较新的次要版本,但这需要您进行新的拉取,以获取(重新)标记图像的最新版本

为什么最新版本不能在普通的“2.1-aspnetcore-runtime”容器中提供?在创建(或运行)docker容器之前,您可能没有运行
docker pull microsoft/dotnet:2.1-aspnetcore-runtime
。如果您不这样做,它将使用最新的本地标记版本(但不是docker hub上该标记可用的最新版本),因为
microsoft/dotnet:2.1-aspnetcore-runtime
在发布时将指向较新的次要版本,但这需要新的拉取it@Tseng谢谢,我会试试的。这可能就是问题所在