asp.net coreASP.NET Core见识录.Netcore

.net core 项目发布IIS实战总结+troublesho

2019-08-10  本文已影响7人  Angeladaddy

1. 服务器环境配置:下载正确的Runtime和 .NET Core Hosting Bundle

这一步一定要选对版本号,否则会出现502.5错误。首先查看自己机器上(开发机)的.net core sdk版本:

我的版本号是2.2.101
然后到这里https://dotnet.microsoft.com/download/dotnet-core,点击自己的大版本进入

在打开的页面往下拉,找到自己的小版本,下载对应的 Runtime & Hosting Bundle
image.png
在服务器上安装下载好的文件。

2. 服务器建立IIS站点,与平常站点无异;但是应用程序池要选无托管代码

image.png

3. 工程设置

4. 发布好了以后上传服务器即可

trouble shooting

.net core iis 托管(其实不能叫托管了,对于.net core项目iis只是起到一个转发作用,类似nginx)会出现很多莫名奇妙的错误,最常见的是502.3,需要一个一个排查

  1. 首先最重要的一点,如果iis启动失败,在项目目录下控制台输入dotnet 你的工程名.dll看看项目能否启动,若启动不了肯定是项目的问题了。
  2. 如果能启动,但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发布问题

上一篇下一篇

猜你喜欢

热点阅读