• IIS 发布 .net core 3.1


    官方文档地址:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio

    第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用。

    1.服务器装aspnetcore-runtime-3.1.1-win-x64.exe

    下载链接:https://dotnet.microsoft.com/download/dotnet-core/3.1

    2.服务器装dotnet-hosting-3.1.1-win.exe

    注意:安装dotnet-hosting-3.1.1-win.exe可能导致所有的应用程序池都停止了,手动起来也会自定停止,这个时候不要慌,把dotnet-hosting-3.1.1-win.exe卸载了,再安装vc_redist.x64.exe,下载链接:https://www.microsoft.com/en-us/download/details.aspx?id=48145

     然后再装dotnet-hosting-3.1.1-win.exe就ok了

    安装IIS和Windows Server Hosing之后 ,重启IIS服务,检查IIS"模块"中是否有 “AspNetCoreModule2”

     
     

    3.发布项目,将发布生成的文件拷贝到IIS网站对应的文件夹

    第二部分:关于发布、部署到iis的一些配置:

          1. 关于visual studio 2019发布.net core 3.0时一些配置

          发布-步骤1:选取发布目标:选择文件夹,然后点击高级: 

             

          发布-步骤2:目标框架:netcoreapp3.0, 部署模式:框架依赖,目标运行时:选择可移植。然后保存。     

               

         注意: 这里要重点说明:这里的目标运行时:win-x64或者win-x86 是你第一步,安装.net core sdk的运行时版本。并不是你操作系统的版本

       我们在第一部介绍时,就直接选择的是64位按照包,所以这个文章所有截图中都是选择64位运行时版本。

         

         发布-步骤3:点击发布按钮,生成文件。如果点击exe,可以看到控制台相关信息,说明发布没有问题。

    发布后查看

       2.部署到iis 。

              建议查看官方文档:将 ASP.NET Core 应用发布到 IIS ,https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/publish-to-iis?view=aspnetcore-3.1&tabs=visual-studio。

              这里截图列一下我的关键配置:

              1.应用程序池,选择无托管模式。我电脑是64位,选择“启用32位应用程序”为“false”。

                

          iis进程高级选项中,修改进程模块的“标识”,使用有管理员角色的账号登录。如果不使用管理员权限账号,我这里会报500.0 - ANCM In-Process Handler Load Failure。所以一定要改。可以设置成LocalSystem

                

           2.权限配置:选择【网站】》选中【要更改的网站】,点击【基本设置】,弹出如下对话框。点击【连接为】,路径凭据中选择【特定用户】,点设置,输入管理员账号和密码。

                

      第三部分:使用 IIS 在 Windows 上托管 ASP.NET Core  问题处理:

    官方文档 https://docs.microsoft.com/zh-cn/aspnet/core/host-and-deploy/iis/index?view=aspnetcore-3.1#iis-configuration

    常见的异常处理方式:

    1.500错误。

    HTTP Error 500.0 - ANCM In-Process Handler Load Failure

    Troubleshooting steps:

    • Check the system event log for error messages
    • Enable logging the application process' stdout messages
    • Attach a debugger to the application process and inspect

    For more information visit: https://go.microsoft.com/fwlink/?LinkID=2028526

    下图: 

                   

    部署后出现的以上错误的原因可能有以下几点:

        1、没有安装第一部分中的前2个安装包:.net core sdk(.net core sdk) 和 dotnet-hosting( .NET Core 托管捆绑包)

        2、发布或者部署时运行时版本没有选择正确。现在一般都是64位。注意详细的配置。  

        3、部署后给iis和应用程序池的权限不够。分别给iis网站和应用程序池,分管理员用户权限。

        4、如果iis服务器环境安装了以前版本的core,比如说3.0,发布后可能会有500错误。本人发布遇到这个问题,删除旧版本统一新版本解决。

     其他参考:

           Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式) : https://blog.csdn.net/weixin_33757609/article/details/93693395 。

    2.403错误
    请注意ssl的相关配置

    3.503错误。

    iis上其他应用报503错误,解决方式,修改下述文件下的两处地方。给这两个节点 指定加载模式 preCondition="bitness64"

    C:WindowsSystem32inetsrvconfigapplicationHost.config 
    <add name="AspNetCoreModuleV2" image="%ProgramFiles%IISAsp.Net Core ModuleV2aspnetcorev2.dll" preCondition="bitness64" />
    
    <add name="AspNetCoreModuleV2" preCondition="bitness64" />

    Core的应用报503,如果服务器是2012R2版本的话,需要安装 Visual C++ Redistributable

    链接地址: https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145

     4.404错误。

    然后查看IIS日志, 如下图

     
     

    打开IIS日志存放目录,C:inetpublogsLogFilesW3SVC4打开一看,没问题啊,没有错误日志啊(内心很纠结。。。)。

    各种百度、Goolge就是没找到解决办法,一直以为是环境问题,服务器都重启了不下3次

    最后自己尝试手动补齐了路由,一看可以了!!!
    说到底还是对.NetCore了解不够深入,发布后IIS托管站点后不会对路由默认补齐,所以在项目的launchSettings.json文件里改成一朵花都没用。

    默认路由未自动补齐导致404的解决办法:
    1、Nuget 安装Microsoft.AspNetCore.Rewrite
    2、在启动项目Startup.Configure方法下的app.UseMvc();代码前加入下面代码:
    var option = new RewriteOptions();
    option.AddRedirect("^$", "swagger"); //swagger为补充的路由
    app.UseRewriter(option);
    
    app.UseMvc();·

    .net core后台服务运行,阻止IIS应用程序池自动回收

    回收——固定时间间隔(分钟) 改为 0

    ——虚拟/专用内存限制(KB) 改为 0

    进程模型——闲置超时(分钟) 改为 0



     
     
    前后端分离部署请参考:https://www.cnblogs.com/cjdonet/p/12816751.html

    文章内容引用文章:https://www.cnblogs.com/davies/p/12038023.html      https://www.jianshu.com/p/a03c67feb0bd

                                    https://www.cnblogs.com/lr215/p/12901687.html          https://www.cnblogs.com/liuqiyun/p/12213247.html

  • 相关阅读:
    CopyOnWriteArrayList源码阅读笔记
    ArrayList源码阅读笔记
    MySQL和Oracle的区别
    思维导图概览SpringCloud
    Java学习之Request篇
    Java学习之servlet篇
    Java学习之数据库连接池
    Java学习之注解篇
    Java爬取先知论坛文章
    Java学习之爬虫篇
  • 原文地址:https://www.cnblogs.com/riddly/p/13747989.html
Copyright © 2020-2023  润新知