IIS 发布 .net core 3.1
第一部分:本教程介绍如何在 IIS 服务器上托管 ASP.NET Core 应用。
1.服务器装aspnetcore-runtime-3.1.1-win-x64.exe
下载链接:https://dotnet.microsoft.com/download/dotnet-core/3.1
其他:https://dotnet.microsoft.com/en-us/download/dotnet
第1步第2步一般点击上图中已经红色标识出来的区域,分别点击X64 与 Hosting 下载两个安装文件。
2.服务器装dotnet-hosting-3.1.1-win.exe
安装dotnet-hosting
下载链接: https://www.microsoft.com/net/permalink/dotnetcore-current-windows-runtime-bundle-installer
注意:安装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 目前sever2016上没有遇到这个情况,一般sever2012可能需要安装这个软件包。
然后再装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 问题处理:
常见的异常处理方式:
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:\Windows\System32\inetsrv\config\applicationHost.config
<add name="AspNetCoreModuleV2" image="%ProgramFiles%\IIS\Asp.Net Core Module\V2\aspnetcorev2.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:\inetpub\logs\LogFiles\W3SVC4打开一看,没问题啊,没有错误日志啊(内心很纠结。。。)。
各种百度、Goolge就是没找到解决办法,一直以为是环境问题,服务器都重启了不下3次
最后自己尝试手动补齐了路由,一看可以了!!!
说到底还是对.NetCore了解不够深入,发布后IIS托管站点后不会对路由默认补齐,所以在项目的launchSettings.json文件里改成一朵花都没用。
5. 500.30错误 HTTP Error 500.30 - ASP.NET Core app failed to start
报错信息:
HTTP Error 500.30 - ASP.NET Core app failed to start
Common solutions to this issue:
The app failed to start
The app started but then stopped
The app started but threw an exception during startup
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=2028265
打开事件查看器:
定位错误:
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/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