部署到 Elastic Beanstalk 时未检测到 .runtimeconfig.json

部署到 Elastic Beanstalk 时未检测到 .runtimeconfig.json

我正在尝试将 ASP.NET 应用程序部署到 Linux 上的 Elastic Beanstalk 的 .NET Core。当我上传代码时,出现以下错误:

Instance deployment: Your source bundle has a single .NET Core application. You must include a file with a '.runtimeconfig.json' suffix. The deployment failed.

问题是,我正在上传的 zip 文件的根目录中有这样一个文件。当我上传示例应用程序时,它可以正常工作,但当我上传自己的应用程序时,它却不能正常工作。以下是我的Project.runtimeconfig.json文件的内容:

{
  "runtimeOptions": {
    "tfm": "netcoreapp3.1",
    "framework": {
      "name": "Microsoft.AspNetCore.App",
      "version": "3.1.0"
    },
    "configProperties": {
      "System.GC.Server": true,
      "System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
    }
  }
}

答案1

我找到了问题所在:我压缩的级别太高了。.runtimeconfig.json您需要直接压缩包含该文件的文件夹,而不是压缩该文件夹的内容。

答案2

您可以尝试以下操作:

  1. 将运行时配置添加到您的 .csproj 或编写您自己的 json 文件:
 <PropertyGroup>
    <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
 </PropertyGroup>
  1. 生成 aws-windows-deployment-manifest.json 文件:
{
  "manifestVersion": 1,
  "deployments": {

    "aspNetCoreWeb": [
      {
        "name": "<<your app name>>",
        "parameters": {
          "appBundle": ".",
          "iisPath": "/",
          "iisWebSite": "Default Web Site"
        }
      }
    ]
  }
}
  1. 发布您的应用程序并生成您的软件包(.zip 文件):
$ dotnet publish -o bundle

您的应用程序包(.zip 文件)必须在根文件夹中包含文件“appname.runtimeconfig.json”和“aws-windows-deployment-manifest.json”才能成功部署。

前任:

> bundle.zip
   > app.dll
   > app.runtimeconfig.json
   > aws-windows-deployment-manifest.json

请注意,'aws-windows-deployment-manifest.json' 中的 prop "appBundle": "." 表示同一文件夹中的文件。

抱歉,如果我拼写错误,请随时纠正我。

相关内容