在IIS上部署你的ASP.NET Core项目

 

概述

与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kestrel不同端口的ASP.NET Core程序中,随后就将接收到的请求推送至中间件管道中去,处理完你的请求和相关业务逻辑之后再将HTTP响应数据重新回写到IIS中,最终转达到不同的客户端(浏览器,APP,客户端等)。而配置文件和过程都会由些许调整,中间最重要的角色便是AspNetCoreModule,它是其中一个的IIS模块,请求进入到IIS之后便立即由它转发,并迅速重定向到ASP.NET Core项目中,所以这时候我们无需设置应用程序池来托管我们的代码,它只负责转发请求而已。

部署之前要确保你的IIS上已经安装了AspNetCoreModule托管模块,如果没有的话,点击这里进行下载并安装

一、安装IIS

1、在控制面板→程序→启用或关闭Windows功能→勾选Internet Information Services以及Web管理工具下的IIS管理控制台

二、发布项目

1、发布我们上一篇建好的ASP.NET Core API项目,然后选择IIS,新建一项发布配置

2、发布方法选择文件系统,然后设置一个发布路径

3、配置文件可以根据你线上、线下的环境进行选择,因为是基于.NET Core,所以目标框架为netcoreapp1.1,然后保存发布即可

4、当然了,你还可以基于CLI的Publish命令进行发布,只需切换到Light.API根目录下,输入以下命令即可

dotnet publish --framework netcoreapp1.1 --output "E:\Publish" --configuration Release

framework表示目标框架,output表示要发布到的目录文件夹,configuration表示配置文件,等同于和上面我们通过管理器来发布的操作,如图:

三、在IIS中添加网站

1、添加一个网站,设置一下名称,并将路径指向你刚才发布的文件夹,然后启动网站即可

2、设置应用程序池的.NET CLR版本为“无托管代码”,因为刚才也说了,IIS是作为一个反向代理的角色,并不需要它来托管代码

3、OK,大功告成,浏览一下我们的网站。

此时我的内心是崩溃的,没有任何有用的提示信息,看来只能自己动手查看应用程序的运行日志了

4、设置IIS的日志记录方式为日志文件和ETW事件

5、重新访问网站,然后打开Windows应用程序日志,你会看到这样一条信息。意思是说你的应用程序已经由PID为3236的进程启动,并且在25636的端口上监听着。

我打开任务管理器查看了一下,说的很对。应该是一切正常才对啊,那为啥访问网站是404呢。

纠结了半天,原来是因为网站没有自动重定向到/swagger/ui页面,重新访问:http://192.168.1.105/swagger/ui,你会看到熟悉的画面

6、最后一点,其实你还可以通过CLI来运行你发布的程序,切换到你发布文件夹下,输入以下命令:

dotnet Light.API.dll

看到这个提示,那么说明你成功了。试着访问一下:http://localhost:5000/swagger/ui

而此时你再回过头来看任务管理器,那么就会又多了一个dotnet的进程

写在最后

至此,整个IIS的搭建已经完成,不知道你是否有所收获。接下来不知道把它发布到Linux上,会有什么样的坑。不管怎样,你的每一步,回过头来看,都是值得的!

NET Core项目的更多相关文章

  1. 在传统.NET Framework 上运行ASP.NET Core项目

    新的项目我们想用ASP.NET Core来开发,但是苦于我们历史的遗产很多,比如<使用 JavaScriptService 在.NET Core 里实现DES加密算法>,我们要估计等到.N ...

  2. 为.NET Core项目定义Item Template

    作为这个星球上最强大的IDE,Visual Studio不仅仅提供了很多原生的特性,更重要的是它是一个可定制的IDE,比如自定义Project Template和Item Template就是一个非常 ...

  3. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  4. 如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?

    对于.NET开发人员来说,我们已经习惯了VS这个世界上最强大的IDE,所以对他们来说,项目的创建直接利用安装到VS中相应的项目模板即可.当.NET Core跨出了Windows的围栏,正式拥抱其他平台 ...

  5. Asp.Net Core 项目实战之权限管理系统(0) 无中生有

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  6. Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  7. Asp.Net Core 项目实战之权限管理系统(2) 功能及实体设计

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  8. Asp.Net Core 项目实战之权限管理系统(3) 通过EntityFramework Core使用PostgreSQL

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  9. Asp.Net Core 项目实战之权限管理系统(5) 用户登录

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  10. Asp.Net Core 项目实战之权限管理系统(6) 功能管理

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

随机推荐

  1. 迁移学习——使用Tensorflow和VGG16预训模型进行预测

    使用Tensorflow和VGG16预训模型进行预测 from:https://zhuanlan.zhihu.com/p/28997549   fast.ai的入门教程中使用了kaggle: dogs ...

  2. bzoj 3685

    线段树 方法一: 值域线段树,递归去写的,每次节点存出现次数. 对于几个操作, 1,2 直接加减就好 ; 3,4 操作贪心往某一个方向找 .7也很简单,主要说前驱后继怎么找.我是先找这个数第几小,根据 ...

  3. bjwc Day0 大型签到日

    1.18期末考试 1.19试卷讲评 1.20我开始了bjwc愉快的冬眠之旅 上午先是颁发noip一等奖 我在台下笑得像个没有一等奖的孩子/手动微笑 然后去机房试了一下机 坐在鸡神边上,键盘竟然是坏的, ...

  4. P2936(BZOJ3396) [USACO09JAN]全流Total Flow[最大流]

    题 裸题不多说,在网络流的练习题里,你甚至可以使用暴力. #include<bits/stdc++.h> using namespace std; typedef long long ll ...

  5. 【Lintcode】135.Combination Sum

    题目: Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C  ...

  6. BZOJ3065:带插入区间K小值

    浅谈树状数组与主席树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...

  7. Jasper-template

    ylbtech-Jasper: 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部     6.返回顶部   作者:ylbtech出处:http://ylbtech. ...

  8. CodeForces 1118F2. Tree Cutting (Hard Version)

    题目简述:给定$n \leq 3 \times 10^5$个节点的树,其中一部分节点被染色,一共有$k$种不同的颜色.求将树划分成 $k$ 个不相交的部分的方案数,使得每个部分中除了未染色的节点以外的 ...

  9. 连接带密码的access数据库

    在网上找了很多都不靠谱,稀里哗啦的弄一堆连接字符串,很不优雅. 这个方法很简单: 1.在“连接”这页中,下方有“输入登录数据库的信息”用户名:admin,并在下面选择“空白密码” 2.在“所有”这页的 ...

  10. day1 java基础回顾-IO流

    IO流的分类 注:这几个类都是抽象类. IO解决问题: 解决设备与设备之间 的数据传输问题. 比如: 硬盘--->内存 内存----->硬盘 字节流: 输入字节流:---------| I ...