gpt4 book ai didi

c# - ASP.NET 5/MVC 6 控制台托管应用程序

转载 作者:行者123 更新时间:2023-11-30 13:30:37 25 4
gpt4 key购买 nike

在 MVC5 中,我有一个控制台应用程序将使用 Microsoft.Owin.Hosting.WebApp.Start(...) 来托管一堆 Controller ,这些 Controller 将从放置在外部文件夹中的程序集动态加载并运行一些自定义通过 API 调用对它们进行初始化。这样我就可以将参数传递给在运行时确定的初始化方法(并且不会像维护配置文件那样笨拙)。

在 MVC6 中,据我所知,自托管现在由 DNX 运行时使用 Microsoft.AspNet.Hosting 完成,但这都是通过命令行完成的。有没有一种方法可以让我从 C# 控制台应用程序中自行托管,以便我可以保留此初始化架构?

最佳答案

...I had a console application that would use Microsoft.Owin.Hosting.WebApp.Start(...) to host [and to] pass parameters to the initialization method that were determined at runtime...

在 ASP.NET 4.x 中,我们使用 OWIN 主机在控制台应用程序中自行托管。我们直接运行 MyApp.exe。它的 Main() 方法调用 WebApp.Start() 来创建 OWIN 主机。我们使用 IAppBuilder 的实例通过 appBuilder.Use() 构建 HTTP 管道,并将其与 appBuilder.Build() 链接在一起>。这都在 Microsoft.Owin.Hosting 命名空间内。

Is there a way I can self-host from within a C# console application so I can keep this initialization architecture?

在 ASP.NET Core rc2 中,我们使用 IWebHost 在控制台应用程序中自托管。 (这不是 OWIN 主机,尽管 OWIN 启发了它。)我们直接运行我们的 MyApp.exeMain() 方法创建一个新的 WebHostBuilder(),我们使用它通过 webHostBuilder.Use() 构建 HTTP 管道,链接它与 webHostBuilder.Build() 一起。这一切都在 Microsoft.AspNet.Hosting 命名空间内。

关于 Pinpoint 的回答,在 ASP.NET Core rc1 我们需要运行 dnx.exe 而不是直接运行我们的应用程序。 WebHostBuilder 的工作隐藏在 dnx.exe 可执行文件中。 Dnx.exe 也会启动我们的应用程序。我们的应用程序的 Main() 方法调用 WebApplication.Run(),之后我们使用 IApplicationBuilder 的实例将中间件添加到 HTTP 管道调用 appBuilder.Use()。我们的应用程序和 dnx.exe 共同负责创建/配置主机。这很复杂,我很高兴这在 rc2 中发生了变化。我认为在 rc1 中,OWIN 的 WebApp.Start() 等效于 WebApplication.Run()

ASP.NET 4.x            ASP.NET Core rc1           ASP.NET Core rc2

N/A Dnx.exe N/A
MyApp.exe MyApp.dll MyApp.exe
Main(args) Main(args) Main(args)
WebApp.Start() WebApplication.Run(args) N/A
appBuilder.Use() appBuilder.Use() webHostBuilder.Use()
appBuilder.Build() N/A webHostBuilder.Build()

一些引用资料

http://www.asp.net/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

https://msdn.microsoft.com/en-us/library/microsoft.owin.hosting.webapp%28v=vs.113%29.aspx

关于c# - ASP.NET 5/MVC 6 控制台托管应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31258601/

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