ASP.NET Core搭建多层网站架构【14-扩展之部署到IIS】
2020/02/03, ASP.NET Core 3.1, VS2019, IIS 10, dotnet-hosting-3.1.1-win.exe
摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构【14-扩展之部署到IIS】
在Windows上将ASP.NET Core网站部署到IIS
本章节由于并未对代码做出改动,仅添加了发布配置文件,所以没有上传代码分支(下一章节中可以看到本章节添加的发布配置文件)
本章节介绍了在Windows上将ASP.NET Core网站部署到IIS,部署环境是 Windows 10.0.18363 (企业版)
添加IIS功能
在控制面板-程序和功能中,添加IIS:

勾选选项默认即可
我这里是win10企业版,winserver服务器也是类似的开启该功能
安装dotnet-hosting
官网下载安装dotnet-hosting,下载页面

先选取对应的.NET Core版本,然后找到Hosting Bundle下载,下载下来安装即可
编译项目
对着MS.WebApi应用程序右击,选择发布:

选择文件夹我这里保持了默认bin\Release\netcoreapp3.1\publish\文件夹
点击高级,进一步配置:

Release配置,部署模式为框架依赖,目标运行时为可移植,勾选删除目标上的其他文件,最后点保存,创建该配置文件

最后点击发布,项目即开始以release方式编译
发布完成后,可以看到发布的文件都在目标文件夹中了:

- 使用了
Release配置,默认VS对Release的配置,依然会生成pdb调试文件,需要手动在项目属性-生成-Release配置-高级-调试信息选择为无,之后该项目才不会生成pdb文件(注意调试的时候不能选择为无,会导致无法调试) - 部署模式是框架依赖,独立部署和框架依赖的区别,官网说的很清楚了,可以看官方文档
- 目标运行时,我选择了
可移植,不管在哪个平台都能运行;也可以依据目标机器,选择具体的平台 - 勾选删除目标上的其他文件,确保多次发布,之前的遗留文件不会污染新的发布文件
IIS配置
选择一个地方作为部署目录,这里我选择D盘下website文件夹(如果选择C盘,记得要把该文件夹权限设为完全控制,否则网站没有对该文件夹的修改权限)
将发布后生成的文件都拷贝至该目录下:

打开IIS管理器
添加应用程序池
右击应用程序池-添加应用程序池:

- 名称随意
- .NET CLR版本一定要选择无托管代码
- 托管模式为集成
添加网站
右击网站-添加网站,按以下配置添加:

- 名称随意
- 应用程序池要选择上一步骤中添加的应用程序池
- 物理路径是之前步骤中选定的website文件夹
- 这里我修改了端口号为5001
至此,部署已完成
测试部署前需确认:
- 网站appsettings.json中设置的数据库连接地址是否能正常访问、连接
- dotnet-hosting-版本号-win.exe已安装成功
- IIS已配置成功
- 如需局域网访问,确认防火墙打开了对应端口(具体可以百度下,很简单)
使用Postman调用接口,可以正常访问则部署成功:

排查错误
如果遇到网站启动失败,对照官方文档进行排错
排错思路:
- 网站目录下的web.config中
stdoutLogEnabled值改为true,重新访问网站,目录下会生成错误日志,根据错误日志排错或百度 - 网站Program.cs下的Main方法中,使用try catch,并使用NLog记录日志,就能看到是否是网站内部逻辑运行出错
- 新建一个空白的网站,发布出来部署试试,排除目标机器环境是否存在问题
ASP.NET Core搭建多层网站架构【14-扩展之部署到IIS】的更多相关文章
- ASP.NET Core搭建多层网站架构【0-前言】
2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构 目录 0-前言 1-项目结构分层建立 2-公共基 ...
- ASP.NET Core搭建多层网站架构【1-项目结构分层建立】
2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[1-项目结构分层建立] 文章目录 此分支项目代码 ...
- ASP.NET Core搭建多层网站架构【2-公共基础库】
2020/01/28, ASP.NET Core 3.1, VS2019,Newtonsoft.Json 12.0.3, Microsoft.AspNetCore.Cryptography.KeyDe ...
- ASP.NET Core搭建多层网站架构【3-xUnit单元测试之简单方法测试】
2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 2.4.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-xUnit单元测试 ...
- ASP.NET Core搭建多层网站架构【4-工作单元和仓储设计】
2020/01/28, ASP.NET Core 3.1, VS2019, Microsoft.EntityFrameworkCore.Relational 3.1.1 摘要:基于ASP.NET Co ...
- ASP.NET Core搭建多层网站架构【5-网站数据库实体设计及映射配置】
2020/01/29, ASP.NET Core 3.1, VS2019, EntityFrameworkCore 3.1.1, Microsoft.Extensions.Logging.Consol ...
- ASP.NET Core搭建多层网站架构【6-注册跨域、网站核心配置】
2020/01/29, ASP.NET Core 3.1, VS2019, NLog.Web.AspNetCore 4.9.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站 ...
- ASP.NET Core搭建多层网站架构【7-使用NLog日志记录器】
2020/01/29, ASP.NET Core 3.1, VS2019, NLog.Web.AspNetCore 4.9.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站 ...
- ASP.NET Core搭建多层网站架构【8.1-使用ViewModel注解验证】
2020/01/29, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[8.1-使用ViewModel注解验证] 使用V ...
- ASP.NET Core搭建多层网站架构【8.2-使用AutoMapper映射实体对象】
2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基 ...
随机推荐
- 我写的UI自动化框架
---------------------------------------------------------------------------------------------------- ...
- 创建pod失败分析
- laravel-middleware中间件常用使用方法
介绍 中间件提供了一种方便的机制过滤进入应用程序的 HTTP 请求.例如,Laravel 包含一个中间件,验证您的应用程序的用户身份验证.如果用户未被认证,中间件会将用户重定向到登录界面.然而,如果用 ...
- [MC] 我的世界 craftbukkit-1.12.2 卡爆
昨天晚上的时候,和朋友玩我的世界 结果我这边卡爆了,牛圈里面的牛都是一动一动的... 然后我登陆服务器,发现CPU爆炸了... 100%的使用率 mstsc都卡爆了 内存占用了800多MB (服务器是 ...
- 后端——框架——日志框架——logback——《官网》阅读笔记——第一章节
第一章节搭建了logback日志框架的环境,演示了Hello World的示例,并详细分析了示例. 搭建日志框架的过程非常简单,只需要在项目的classpath上添加以下三个jar包,logback- ...
- Go反射
一.引入 不同语言的反射模型不尽相同,有些语言还不支持反射.<Go 语言圣经>中是这样定义反射的: Go 语言提供了一种机制在运行时更新变量和检查它们的值.调用它们的方法,但是在编译时并不 ...
- 排查 k8s 集群 master 节点无法正常工作的问题
搭建的是 k8s 高可用集群,用了 3 台 master 节点,2 台 master 节点宕机后,仅剩的 1 台无法正常工作. 运行 kubectl get nodes 命令出现下面的错误 The c ...
- 忘记win8开机密码的清除方法
1.进PE 2.打开计算机,进入 C:\Windows\System32 目录下 3.找到 magnify.exe 改名为 mangify1.exe .将 cmd.exe 改名为 magnify.ex ...
- 自定义虚拟机MAC地址 | 它与 VMware 预留的 MAC 冲突 解法
https://blog.csdn.net/wangrui1573/article/details/82056020 问题:我想给VMware ESXi上的一台虚拟机分配一个静态的MAC地址.然而当我 ...
- Mongodb学习笔记(三)性能篇
一.索引管理 MongoDB提供了多样性的索引支持,索引信息被保存在system.indexes中MongoDB中_id字段在创建的时候,默认已经建立了索引,这个索引比较特殊,并且不可以删除,不过Ca ...