美文网首页asp.net coreASP.NET Core见识录.Netcore
.net core 项目发布IIS实战总结+troublesho

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

作者: Angeladaddy | 来源:发表于2019-08-10 10:34 被阅读7次

    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. 工程设置

    • 检查发布json文件,尤其是数据库连接字符串是否能在服务器上连接成功


      image.png
    • 发布设置,选择本地文件发布


      image.png
      image.png

    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发布问题

    相关文章

      网友评论

        本文标题:.net core 项目发布IIS实战总结+troublesho

        本文链接:https://www.haomeiwen.com/subject/yladlctx.html