微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 混淆:ASP.NET Core 2不是托管代码,但ASP.Net Core Runtime是什么?

关于Apppool中IIS中的Microsoft文档 here,我们可以为ASP.NET Core 2应用程序设置“Not managed code”,因为ASP.NET Core 2应用程序不需要CLR:

enter image description here

这让我们感到困惑,因为有一个下载页面提供了下载’.NET Core Runtime 2.0.6’的链接https://www.microsoft.com/net/download/all

当ASP.NET Core 2不是托管代码时,为什么运行时可以下载?

解决方法

IIS上的Asp.net核心作为反向代理运行.这意味着:

> Asp.net核心运行在一个单独的过程中.该进程运行单独的独立Web服务器(通常是Kestrel),绑定到本地环回接口上的某个动态端口.例如,它可能会侦听“localhost:3434”.
> IIS知道该进程(它在哪个端口上侦听,如何启动它),以及当IIS收到请求时 – 它将该请求代理到在单独进程中运行的asp.net核心本地Web服务器.

这意味着不需要在IIS托管池中运行CLR,因为实际的asp.net核心不在IIS应用程序池进程中运行.

当然,asp.net核心进程本身需要托管运行时,但它可以加载此运行时本身,而无需IIS的任何帮助.

更新:如评论中所述,ASP.NET 2.1的下一版本将介绍IIS中托管的asp.net核心的进程内模型.在这种情况下,asp.net核心代码实际上将在IIS应用程序池中运行.但是,即使在这种情况下,应用程序池.NET CLR版本也应保留为“无托管代码”,因为 asp.net核心IIS模块将加载.NET Core CLR本身,无需IIS干预.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐