记录所有部署时遇到的问题。
转载自:.NET Core 3.0 构建和部署(测试过可以使用)
A 单文件可执行文件(文件体积较大,合并所有依赖)
asp.net core 项目文件(*.csproj)添加以下代码
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
B 程序集链接(比A项文件体积小,只合并项目中使用的依赖)[有风险]
但是启用这个特性的时候一定要注意,如果项目使用到了反射或相关动态功能(例如 ASP.NET Core 和 WPF),那么通常会在剪裁时损坏。
发生此损坏是因为链接器不知道此动态行为,并且不能确定反射需要哪些框架类型。 可配置 IL 链接器工具以发现这种情况。
最重要的是,剪裁后务必对应用进行测试。
asp.net core 项目文件(*.csproj)添加以下代码
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<PublishTrimmed>true</PublishTrimmed>
C ReadyToRun 镜像 【改进.net core启动时间】[推荐]
asp.net core 项目文件(*.csproj)添加以下代码
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
<PublishSingleFile>true</PublishSingleFile>
<!--<PublishTrimmed>true</PublishTrimmed>-->
<PublishReadyToRun>true</PublishReadyToRun>
.NET Core RunTime 下载(匹配开发.NET Core的版本)
选择 Run apps - Runtime ----->ASP.NET Core/.NET Core: Runtime & Hosting Bundle
选择端口 5001-65535(5000以下容易被windows占用)
1 发布选项设置
部署模式:框架依赖(推荐)【手工安装.net core runtime】
独立【不安装.net core runtime,适用于服务器有多个版本.Net Core,发布包已包含所有依赖的类库】
目标运行时:可移植(推荐)
2 部署到IIS时HTTP Error 500.30 – ANCM In-Process Start Failure,但是直接调试时没问题?Net Core 3.0 [2019/10/27]
原因:配置文件里appsettings.json缺少符号或代码错误
解决:的确是appsettings.json格式有问题【在网上找了JSON格式化工具】
既然是JSON格式有问题, vs竟然也编译通过!!!
3 IIS 单个网站启动不了,默认网站正常。
原因: 端口被占用
解决:修改端口
4 HTTP Error 503. The service is unavailable.
原因:应用程序池“Test”将被自动禁用,出现严重错误。
解决方法:
下载安装 Visual C++ Redistributable for Visual Studio 2015 组件即可,重启后解决问题。
转载自 :https://blog.csdn.net/RazerFan100/article/details/88578433
5 修改部署端口5000【.NET Core 3.0】
解决:appsettings.json 文件
添加 "urls":"http://*:10010;http://*:10011"
6 发布时不包含appsettings.*.json
注:appsettings.json还是需要的,否则全部是默认配置。
解决: asp.net core 项目文件(*.csproj)添加以下代码
<ItemGroup>
<Content Remove="appsettings.Development.json"></Content>
<None Include="appsettings.Development.json" />
</ItemGroup>
7 发布时不生成web.config文件
说明:appsettings.json 完全可以替代web.config
解决: asp.net core 项目文件(*.csproj)添加以下代码
<IsTransformWebConfigDisabled>true</IsTransformWebConfigDisabled>