gpt4 book ai didi

asp.net-core - 执行如何从 clr 传递到 Startup 类 (startup.cs)?

转载 作者:行者123 更新时间:2023-12-02 20:19:38 27 4
gpt4 key购买 nike

asp.net 5 中的 Startup 类让我觉得很奇怪。它不是类 Startup : ISomething 或 Startup : BaseSomething ,其中接口(interface)或基类是某些 Microsoft.AspNet.* 程序集的一部分。 No Startup 只是一个普通的类,具有按约定创建的正确的神奇方法签名。

执行如何从 DNX 传递到 Startup.ConfigureServices?

让我们以调用为例:

dnx.exe . web

所以.告诉 dnx 它可以在当前文件夹中找到project.json。从那里找到与键“web”关联的命令。所以如果本地的project.json有这样的:

"commands": {
"web" : Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
}

我将尝试将其组合起来相当于:dnx.exe。 Microsoft.AspNet.Hosting --服务器 Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000

我还了解 dnx 如何使用 project.json 中的参数收集所有源(包括依赖项)以进行内存编译,因此我们现在拥有用户的程序集“MyAssembly”以及 dnx 可用的所有依赖程序集。 dnx 已加载 Microsoft.AspNet.Hosting 作为托管入口点。因此,执行从非托管“ stub ”传递到 Microsoft.AspNet.Hosting 托管程序集。到目前为止正确吗?

接下来的参数指示 Microsoft.AspNet.Hosting 将托管 Microsoft.AspNet.Server.WebListener 的实例(特别是在本地主机的端口 500 上)。好吧,那么 Microsoft.AspNet.Server.WebListener 如何“知道”在“MyAssembly”中查找专门名为“Startup”的类。它只是硬编码到 Microsoft.AspNet.Server.WebListener 中吗?进入 Microsoft.AspNet.Hosting?

跳转到 Startup 类似乎是最后的“魔法”。之前和之后的执行开始变得非常清晰,但我觉得我仍然缺少一些东西。

最佳答案

DNX 知道如何加载和执行具有名为 Program 的类的程序集,该类具有名为 Main 的方法。当您运行 web 命令时,您将 Microsoft.AspNet.Hosting 作为启动程序集传递给 DNX。

托管有 Main method .

This code最终从上面提到的 Main 方法调用的代码中硬编码了“Startup”。实际的硬编码是 here .

关于asp.net-core - 执行如何从 clr 传递到 Startup 类 (startup.cs)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30769960/

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