我正在尝试将 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
您可以尝试以下操作:
- 将运行时配置添加到您的 .csproj 或编写您自己的 json 文件:
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
- 生成 aws-windows-deployment-manifest.json 文件:
{
"manifestVersion": 1,
"deployments": {
"aspNetCoreWeb": [
{
"name": "<<your app name>>",
"parameters": {
"appBundle": ".",
"iisPath": "/",
"iisWebSite": "Default Web Site"
}
}
]
}
}
- 发布您的应用程序并生成您的软件包(.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": "." 表示同一文件夹中的文件。
抱歉,如果我拼写错误,请随时纠正我。