最近要升级 windows 服务器的 ASP.NET Core 2.1 专案到 3.1 版本,发现 Windows 架设在 IIS 上面的方式有所改变。

一. 除了反向代理外,从 ASP.NET Core 3.0 起内建对 IIS in-process-hosting 预设支持(参考),可以不需要把 IIS Pool CLR 版本改为没有 Managed 程序码(请参考),只能依赖 kestrel server 运行 web 引擎。

现在可以去除 kestrel 代表说,它避免IIS 和 Kestrel 之间的额外网路传递,提供更好的性能,照官方说法占用资源也会减少,相关效能测试可以参考(Rick Strahl文章)

这对跟我一样,必须沿用 windows 主机无法替换 Linux 情况是一个好消息!

二. 注意 IIS In-process hosting 每个 app 需要建立一个专门的 pool

没办法像 asp.net mvc 一样,可以多个应用使用同一个 pool 管理。

这点可以参考我在 S.O 发问Brando Zhang 的回答:

Sharing an app pool among apps isn't supported. Use one app pool per app.

否则会出现错误 HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process

三. 虽然 ASP.NET Core 3.1 可以跟 Runtime 环境一起打包成单一执行档(self-contained single file),但遗憾,只对 kestrel server 有效,没有安装 Runtime 的 IIS Server 还是需要安装 Hosting Bundle

没办法像 .net core console 丢一个执行档,别人就能开箱即用的效果。

图片:在没有安装 asp.net core runtime 的 server ,运行 self-contained runtime 的 kestrel core app

图片:同样文件运行在 IIS 会报 500.19 错误

ASP.NET Core 3 起架设在 Windows IIS 方式改变的更多相关文章

  1. ASP.NET Core 2.0 MVC 发布部署--------- IIS 具体操作

    .Net Core 部署到 IIS系统中的步骤 一.IIS 配置 启用 Web 服务器 (IIS) 角色并建立角色服务. 1.Windows Ddesktop 桌面操作系统(win7及更高版本) 导航 ...

  2. asp.net core webapi 似乎未安装在 IIS 中承载 .NET Core 项目所需的 AspNetCoreModule。请尝试修复 Visual Studio 以纠正该问题。

    安装 DotNetCore.1.1.0-WindowsHosting 后,提示如题错误. 解决办法: ASP.NET Core 应用程序运行,可以选择 IIS Express 也可以选择 自己运行 , ...

  3. 【ASP.NET Core】准备工作:在 Windows 10 上配置 Linux 子系统

    ASP.NET Core 其实比传统的 ASP.NET 要简单很多,而且也灵活很多,并且可以跨平台独立运行. 在 Windows 平台上,我们只要在安装 Visual Studio 的时候选择跨平台的 ...

  4. ASP.NET Core 2.0 : 九.从Windows发布到CentOS的跨平台部署

    本文聊一下如何在Windows上用VS开发并发布, 然后将其部署到CentOS上.对于我们一些常在Windows上逛的来说,CentOS用起来还真有些麻烦.MSDN官方有篇文章大概讲了一下(链接),按 ...

  5. Asp.Net Core&Jenkins持续交付到Windows Server

    对于Linux平台上的持续集成和持续交付可以使用Docker快捷的完成任务,但是Windows Server下却不好使用,一般来讲,windows Server下最简单的发布方式是直接手动打包发布或是 ...

  6. 部署ASP.Net Core 2.1 項目到 IIS

    用Asp.net core 2.1 寫了一個小的系統框架,記錄一下部署過程: 1. 首先是安裝 IIS 了,從 控制面板→程序→启用或关闭Windows功能→勾选Internet Informatio ...

  7. 运行Vue在ASP.NET Core应用程序并部署在IIS上

    前言 项目一直用的ASP.NET Core,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Cor ...

  8. ASP.NET Core Mvc中空返回值的处理方式

    原文地址:https://www.strathweb.com/2018/10/convert-null-valued-results-to-404-in-asp-net-core-mvc/ 作者: F ...

  9. 菜鸟入门【ASP.NET Core】2:部署到IIS

    配置IIS模块 ASP.NET Core Module载地址:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/asp ...

随机推荐

  1. node服务器基本搭建

    const http = require('http') // 引入http模块 http.createServer(function(req,res){ // 创建一个http服务器 // 这里是一 ...

  2. 解决加密PDF文档无法复制文字的问题

    有的时候在网络上搜索到一篇心仪的PDF文档,想复制其中内容时提示无法复制. 如果只想摘抄其中部分文字内容,可以使用Firefox浏览器打开这篇加密文档. Firefox浏览器自带PDF插件,打开后即可 ...

  3. 深入理解Java的抽象类和接口

    对于面向对象来说,抽象是其重要特征之一.对于之中的抽象类和接口,两者有很多相似的地方,又有两者之间区别的地方. 用几个简单的例子让你快速的理解两者之间的概念和区别 鸣谢 一.抽象类 在了解抽象类之前, ...

  4. OpenCV计算机视觉学习(7)——图像金字塔(高斯金字塔,拉普拉斯金字塔)

    如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 本节 ...

  5. Pytorch加载并可视化FashionMNIST指定层(Udacity)

    加载并可视化FashionMNIST 在这个notebook中,我们要加载并查看 Fashion-MNIST 数据库中的图像. 任何分类问题的第一步,都是查看你正在使用的数据集.这样你可以了解有关图像 ...

  6. 在国内使用Google验证码reCaptcha

    如今各大网站都不可缺少的一部分就是验证码,验证码具有防止恶意批量操作,保护账户安全等作用.但是现在各种暴力破解验证码的手段层出不穷,验证码的保护也就失去了意义.所以各大平台为了应对这种情况也是使用类似 ...

  7. [Luogu P2891/POJ 3281/USACO07OPEN ]吃饭Dining

    传送门:https://www.luogu.org/problemnew/show/P2891 题面 \ Solution 网络流 先引用一句真理:网络流最重要的就是建模 今天这道题让我深有体会 首先 ...

  8. 使用 Xunit.DependencyInjection 改造测试项目

    使用 Xunit.DependencyInjection 改造测试项目 Intro 这篇文章拖了很长时间没写,之前也有介绍过 Xunit.DependencyInjection 这个项目,这个项目是由 ...

  9. Group指定的方式如下: @Test(groups = {"fast", "unit", "database" })

    Group指定的方式如下: @Test(groups = {"fast", "unit", "database" }) public voi ...

  10. 一个 Task 不够,又来一个 ValueTask ,真的学懵了!

    一:背景 1. 讲故事 前几天在项目中用 MemoryStream 的时候意外发现 ReadAsync 方法多了一个返回 ValueTask 的重载,真是日了狗了,一个 Task 已经够学了,又来一个 ...