ASP.NET Core 3 起布置在 Windows IIS 方式改变

最近要升级 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 错误


<<:  [Golang]同步工具-sync包的Cond-心智图总结

>>:  【资料结构】树的定义与追踪

Day16法式甜点凸肚脐贝壳-优雅玛德莲Madeleines

这次遇到玛德莲是一场意外,与好姊妹见面时,突然给了我玛德莲的模子。看着一头雾水的雪伦,好姊妹才现他搞...

NNI执行的流程

一个Experiment的运行逻辑是: • Tuner 接收搜索空间,生成configuration...

AutoCAD ActiveX #4 Block & Layer

Layer A logical grouping of data, similar to trans...

[Day12] 学 Reactstrap 就离 React 更近了 ~ Component 的引入&使用

前言 本来今天文章就打算介绍很常使用的 Navbar, 但发现这样难度又一下子跳上去了, (因为会牵...

工作散记 - Spotify for Developers

embed 连结格式: Podcast - https://open.spotify.com/em...