Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App
Windows + IIS 环境部署Asp.Net Core App
环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1.
不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运行Asp.Net Core App程序。过去无论是原始的Asp程序还是后来的Asp.Net程序,在IIS中的部署方式都没太大变化,仅需指向程序目录,然后设定虚拟目录,最后做一些参数配置。Asp.Net Core App为了做到跨平台,自带了一个轻量级的Web Server - Kestrel,那么要在IIS中部署Asp.Net Core App,就必须有一种新的机制来协调IIS与Kestrel Server之间的数据传递。
1. Asp.Net Core的部署模式
与传统的Asp.Net程序不同,Asp.Net Core App使用了Kestrel Server。Kestrel是一个跨平台的Web Server,与IIS一样负责请求的监听、接收和响应,但没有IIS丰富的管理功能,仍需要由IIS来处理一些前置工作。(当然你也可以使用Apache来做前置处理)

IIS负责把外部请求转发给后端的Asp.net Core App,充当“反向代理(reverse-proxy)”角色。
2. 理解反向代理
“反向”是指入站方向,“代理”可以理解为某种服务,这里是转发HTTP请求的服务。“反向代理”就是入站方向转发HTTP请求的服务。
和路由器原理一样,路由器除了让局域网能够访问internet,也可以通过设置NAT或端口映射,从internet访问内部的某台服务器,相当于把入站请求转发给指定电脑上,这与IIS的反向代理角色类似。代理服务器与路由器都是起到数据转发的作用,只不过代理服务器转发的是某类应用的数据,路由器转发的是数据包。
3. 部署环境
Asp.Net Core App部署需要操作系统满足:
- Windows 7 或更新版本
- Windows Server 2008 R2 或更新版本
4. 配置IIS
Windows Server上通过“添加角色和功能”,桌面Windows上通过“启用和关闭Windows功能”来安装和配置IIS。确保勾选Web服务和“IIS 管理控制台”:

Windows Server IIS 安装配置

桌面Windows IIS 安装配置
5. 安装.NET Core Windows Server Hosting程序集
安装.NET Core Windows Server Hosting程序集,让IIS具备反向代理功能。该程序集包含了.Net Core运行时(Runtime),.Net Core 类库(Library)和 Asp.Net Core Module。其中Asp.Net Core Module负责反向代理工作。
特别注意,按微软官方说法,如果是脱机安装,则需先手动安装Microsoft Visual C++ 2015 Redistributable。但实践证明即使在线安装很多时候也不会自动安装 Microsoft Visual C++ 2015 Redistributable,因此强烈建议手动安装Microsoft Visual C++ 2015 Redistributabl。
另外,目前.NET Core版本升级很快,请下载最新版本的.NET Core Windows Server Hosting,确保服务器上的.Net Core版本不低于部署的Asp.Net Core App版本。
下载 Microsoft Visual C++ 2015 Redistributable
下载最新版本.NET Core Windows Server Hosting
安装完成重启系统或重启IIS服务即可。
6. IIS中配置Asp.Net Core App
接下来的步骤与部署传统网站基本一致,但也有稍许不同,请留意。
1) 服务器中创建目录存放发布以后的App程序文件,确保App的web.config文件在网站根目录下。
2) 在网站根目录创建一个logs文件夹。如果你开启了某些日志服务,日志文件将记录在这里。当然也可以不记录日志,但初次部署对排错有帮助,建议创建。

web.config 中开启 stdoutLogEnabled="true"
<aspNetCore processPath="dotnet" arguments=".\Web.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" />
3) 在IIS管理器中添加网站。步骤与一般网站配置一致:


4) 配置应用程序池。在左侧导航栏选择“应用程序池”,选择指定程序池,右键菜单,选择“基本设置”,将.Net CLR版本设置为“无托管代码”。

7. 测试Asp.Net Core App
本例使用一个测试公网域名www.test.com,显然我们没有权限更改此域名在公网的解析记录,但我们可以更改此域名在本地的指向用于测试。使用记事本打开C:\Windows\System32\Drivers\etc\hosts文件,添加一条记录 “127.0.0.1 www.test.com”。之后我们在本地访问域名www.test.com时IP地址将解析为 127.0.0.1。使用浏览器打开www.test.com,我们会看到Asp.Net Core App已正常运行:

本文来自:https://www.cnblogs.com/lookerblue/p/7101641.html
Windows Server 2008 R2 + IIS 环境部署Asp.Net Core App的更多相关文章
- Windows + IIS 环境部署Asp.Net Core App
环境:Windows Server 2012, IIS 8, Asp.Net Core 1.1. 不少人第一次在IIS中部署Asp.Net Core App的人都会遇到问题,会发现原来的部署方式无法运 ...
- Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误
如图 在Windows Server 2008 R2 IIS7.5 部署 MVC HTTP 404.0 Not Found 错误,在Win7环境下测试正常,在百度中查找相关解决方法,如修改配置文件等, ...
- windows server 2012 r2 iis8.5 部署asp.net mvc4/5程序小结
windows server 2012 r2 iis8.5 部署asp.net mvc4/5程序小结 原文链接:http://www.xuanhun521.com/Blog/66d491f8-b479 ...
- Windows Server 2008 R2 IIS重装
背景描述: 在一个刚睡醒午觉后的下午,忽然收到客户反馈,说昨天开始应用特别卡,各种卡各种不好用,忽然想到上次说要优化服务器IIS配置还一直没弄,然后迷迷糊糊的就开始进行客户现场服务器IIS配置优化,涉 ...
- Windows server 2008 R2 + IIS7.5,ASP网站设置
Windows server 2008 R2 + IIS7.5,ASP网站设置 1. 让IIS7支持ASP Win2008 IIS7 默认不安装ASP,如果需要ASP 的支持,需要将这个角色服务选上. ...
- c# webapi发布到windows server 2008 r2 iis上提示404错误
项目服务端是一组RestFul风格的webapi,发布到本机的iis没有问题,但是发布到服务器以后就提示404错误.本机是win10的,服务器是windows server 2008 R2 64位.之 ...
- Windows Server 2008 R2 域控制器部署指南
一.域控制器安装步骤: 1.装 Windows Server 2008 R2并配置计算机名称和IP地址(见 附录一) 2.点击“开始”,在“搜索程序和文件”中输入Dcpromo.exe后按回车键: 3 ...
- (转)Windows Server 2008 R2 域控制器部署指南
转自:https://technet.microsoft.com/zh-cn/cloud/gg462955.aspx 一.域控制器安装步骤: 1.装 Windows Server 2008 R2并配置 ...
- 部署.net Core 到 Windows server 2008 r2 IIs
1. 将项目发布 2.iis 新建网站,设置 3 安装windows server hosting 4 关于报错 1.下载sdk https://www.microsoft.com/net/lea ...
随机推荐
- VS2017 winform 打包 安装(使用 Microsoft Visual Studio 2017 Installer Project)
Microsoft Visual Studio 2017 Installer Projects SkyRiN发表于Coding+订阅 253 助力数字生态,云产品优惠大促 腾讯云促销,1核1G 99元 ...
- 【Layui】侧边菜单导航禁用折叠、去除箭头样式
官方提供的样式代码: <ul class="layui-nav layui-nav-tree" lay-filter="test"> <!-- ...
- Qt开发经验小技巧81-90
Qt中的QColor对颜色封装的很完美,支持各种转换,比如rgb.hsb.cmy.hsl,对应的是toRgb.toHsv.toCmyk.toHsl,还支持透明度设置,颜色值还能转成16进制格式显示. ...
- Linux磁盘空间查看、磁盘被未知资源耗尽
Linux系统中,当我们使用rm在Linux上删除了大文件,但是如果有进程打开了这个大文件,却没有关闭这个文件的句柄, 那么Linux内核还是不会释放这个文件的磁盘空间,最后造成磁盘空间占用100%, ...
- SpringBoot 为什么能够自动的注入一些常用的Bean ?
原文转载至:https://blog.csdn.net/qq_29941401/article/details/79605388 但是我一直没有搞懂druid是怎么自动配置的? 这个是properti ...
- 深入Nginx之《HTTP请求报文与HTTP响应报文》
HTTP请求报文 这个很有必要了解,好歹我们得知道Nginx在提供HTTP服务时,客户端都会传些什么.HTTP请求中客户端传送的内容称为HTTP请求报文. 1.请求行包含: 请求方法,请求URL,HT ...
- 【NPDP笔记】第三章 新产品流程
3.1 产品开发,风险与汇报的过程,开发实践和流程提升成功率 管控新产品失败的风险,随着成本增加,风险降低 知识能改改进决策,降低风险,决策框架 识别问题与机会 收集信息 组织记录,组织员工 外部 ...
- .NetCore中EFCore的使用整理(三)-关联表操作
一.查询关联表数据 StudyAboard_TestContext _context = new StudyAboard_TestContext(); CrmRole role = _context. ...
- git对某个文件取消跟踪
git rm --cached readme1.txt 删除readme1.txt的跟踪,并保留在本地. git rm --f readme1.txt 删除readme1.txt的跟踪,并 ...
- lua【卤鹅】总结
转自:https://www.cnblogs.com/reblue520/p/10767428.html 编写一个简单的hello world程序 test.lua 如果觉得简单,可以给一个for循环 ...