gpt4 book ai didi

c# - Main() 方法仅在请求进来时执行

转载 作者:行者123 更新时间:2023-12-04 07:14:20 25 4
gpt4 key购买 nike

我有一个 ASP.NET Core 5 Web 应用程序。
我注意到我是否使用项目名称运行它,DutchTreat ,我的 Main() 中的断点方法立即命中。
但是,如果我使用 IIS Express 运行,Main()方法的断点只有在我发起 HTTP 请求时才会被击中。
enter image description here
为什么是这样?
当我使用 IIS Express 启动应用程序但在发出 HTTP 请求之前,实际运行的是什么代码?
enter image description here
另外,为什么 IIS Express 对 HTTP 和 HTTPS 使用完全不同的端口号,而在使用项目名称时,它使用 5000 和 5001?
信息系统:
enter image description here
项目名:
enter image description here

最佳答案

对于 Asp.net 核心,有一个名为 Kestrel 的自托管应用程序。它是一个处理请求/响应的网络服务器。
在这种情况下,IIS/IISExpress 充当代理和应用程序激活器。
如果您通过直接运行您的应用程序 ( DutchTreat ) 来启动您的 Web 应用程序,则 Kestrel 服务器将启动( Main() 运行)并监听 HTTP 请求。
否则,如果您使用 IIS/IISExpress 运行您的应用程序,IIS 将添加对应用程序的引用(web.config 中的 UrlRewrite)。当 HTTP 请求到来时,IIS 将触发您的应用程序 (.exe) 的运行,然后是 Main()方法将被执行。

关于c# - Main() 方法仅在请求进来时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68879361/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com