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】的更多相关文章

  1. ASP.NET Core搭建多层网站架构【0-前言】

    2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构 目录 0-前言 1-项目结构分层建立 2-公共基 ...

  2. ASP.NET Core搭建多层网站架构【1-项目结构分层建立】

    2020/01/26, ASP.NET Core 3.1, VS2019 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[1-项目结构分层建立] 文章目录 此分支项目代码 ...

  3. ASP.NET Core搭建多层网站架构【2-公共基础库】

    2020/01/28, ASP.NET Core 3.1, VS2019,Newtonsoft.Json 12.0.3, Microsoft.AspNetCore.Cryptography.KeyDe ...

  4. 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单元测试 ...

  5. ASP.NET Core搭建多层网站架构【4-工作单元和仓储设计】

    2020/01/28, ASP.NET Core 3.1, VS2019, Microsoft.EntityFrameworkCore.Relational 3.1.1 摘要:基于ASP.NET Co ...

  6. ASP.NET Core搭建多层网站架构【5-网站数据库实体设计及映射配置】

    2020/01/29, ASP.NET Core 3.1, VS2019, EntityFrameworkCore 3.1.1, Microsoft.Extensions.Logging.Consol ...

  7. 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搭建后端多层网站 ...

  8. 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搭建后端多层网站 ...

  9. 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 ...

  10. ASP.NET Core搭建多层网站架构【8.2-使用AutoMapper映射实体对象】

    2020/01/29, ASP.NET Core 3.1, VS2019, AutoMapper.Extensions.Microsoft.DependencyInjection 7.0.0 摘要:基 ...

随机推荐

  1. anniversary party_hdu1520

    本来以为是一道很简单的提,可以分分钟解决(实际上就是很简单) 然而一直报错,找半天,竟然要多组输入(还是太菜了) 所以每组需要先初始化, 这是一道树形DP的简单题,具体思路就是我选这个上司就不能选他的 ...

  2. [CERC2014] Outer space invaders

    题目链接 题意 你受到一群外星人的攻击,第 $i$ 个外星人会在 $ai$ 时间出现,与你的距离为 $di$,且必须在 $bi$ 时间前消灭.你有一个区域冲击波器,每次攻击可以设定一个功率 $R$,这 ...

  3. L2-1 分而治之

    思路 这题的意思是,如果把这些点打掉,其他的点是否能够完全不连通. 用并查集,或者打上标记之后,判断每个点是否还能到达其他点,如果一个点可以到达其他任何点,都应该输出否. 代码 #include &l ...

  4. JavaScript arguments对象浅析

    arguments对象 概念 用法 属性 arguments对象 概念 arguments 是一个类数组对象.代表传给一个function的参数列表. 用法 function a() { consol ...

  5. JSP中四大作用域详解

    四大作用域 为了在页面.请求.和用户之间传递和共享数据,JSP提供了四个不同的作用域:page(页面作用域).request(请求作用域).session(会话作用域).application(应用程 ...

  6. js无法监听input中js改变值的变化

    $(input).on('change',function(){ }) 当使用$(input).val('...');不会触发它的change事件 解决办法一:在改变它的值后,手动触发input的ch ...

  7. 1.2 Jmeter 使用代理录制脚本

    参考文档: http://jingyan.baidu.com/article/4e5b3e19333ff191911e2459.html 利用JMeter配置代理:1.添加线程组:  Test Pla ...

  8. ($children,$refs,$parent)的使用

    如果项目很大,组件很多,怎么样才能准确的.快速的寻找到我们想要的组件了?? $refs 首先你的给子组件做标记.demo :<firstchild ref="one"> ...

  9. Ansible - iventory

    概述 简单的 ansible 准备 ansible 安装 免密登录 约定 因为重点是 iventory, 所以只使用最简单的模块 ping 1. host-simple 概述 简单版 hosts 文件 ...

  10. oracle创建、删除索引等操作

    1.创建索引 create index 索引名 on 表名(列名); 2.删除索引 drop index 索引名; 3.创建组合索引 create index 索引名 on 表名(列名1,,列名2); ...