1. 服务器环境配置:下载正确的Runtime和 .NET Core Hosting Bundle
这一步一定要选对版本号,否则会出现502.5错误。首先查看自己机器上(开发机)的.net core sdk版本:
然后到这里https://dotnet.microsoft.com/download/dotnet-core,点击自己的大版本进入
在打开的页面往下拉,找到自己的小版本,下载对应的 Runtime & Hosting Bundle
在服务器上安装下载好的文件。
2. 服务器建立IIS站点,与平常站点无异;但是应用程序池要选无托管代码
3. 工程设置
-
检查发布json文件,尤其是数据库连接字符串是否能在服务器上连接成功
-
发布设置,选择本地文件发布
4. 发布好了以后上传服务器即可
trouble shooting
.net core iis 托管(其实不能叫托管了,对于.net core项目iis只是起到一个转发作用,类似nginx)会出现很多莫名奇妙的错误,最常见的是502.3,需要一个一个排查
- 首先最重要的一点,如果iis启动失败,在项目目录下控制台输入
dotnet 你的工程名.dll
看看项目能否启动,若启动不了肯定是项目的问题了。 - 如果能启动,但IIS启动错误,首先检查目录下的web.config文件,因为控制台不用这个文件,IIS要用到:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\XXXXXXXXXX.exe" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
<security>
<requestFiltering>
<!-- 2GB -->
<requestLimits maxAllowedContentLength="2147483648" />
</requestFiltering>
</security>
</system.webServer>
</location>
</configuration>
首先打开日志:stdoutLogEnabled="true"
然后尝试指定.netcore路径:将<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
改为<aspNetCore processPath="C:\Program Files\dotnet\dotnet.exe" arguments=".\your-project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout"/>
然后如果项目能启动了,但是有错误,查看log发现问题。
如果出现502 badgateway,可以在项目csproj文件中加入一句话试试
<PropertyGroup>
//.....
<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
</PropertyGroup>
以上就是我经历过的所有IIS发布问题