不使用ASP.NET Core使用Kestrel

14
我想使用Kestrel HTTP服务器来处理与ASP.NET抽象无关的HTTP事务。我不想安装任何ASP.NET包,只想使用请求/响应模型编写快速/高性能的HTTP应用程序。
过去可以使用HttpListener来完成此操作,但由于现在所有内容都在Linux上运行,因此无法使用HTTP.sys。
每个Kestrel示例都展示了如何使用WebHost来与ASP.NET Core一起使用。
我只想运行一个控制台应用程序,打开一个端口并提供HTTP请求。
我几乎100%确定这是可能的。我该如何做到这一点?

我相信Kestrel是用.net core编写的,所以你很难不使用这些包。 - Erik Funkenbusch
1
请使用https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.server.kestrel.core.kestrelserver?view=aspnetcore-2.1和https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.hosting.internal.hostingapplication.-ctor?view=aspnetcore-2.1#Microsoft_AspNetCore_Hosting_Internal_HostingApplication__ctor_Microsoft_AspNetCore_Http_RequestDelegate_Microsoft_Extensions_Logging_ILogger_System_Diagnostics_DiagnosticListener_Microsoft_AspNetCore_Http_IHttpContextFactory_。 - SLaks
1
Kestrel 运行一系列中间件,因此您只需要学习如何自定义加载哪些中间件组件,并删除所有与 ASP.NET Core 相关的内容,仅保留对您有用的内容,例如静态文件中间件和 URL 重写中间件。 - Lex Li
1个回答

4

Kestrel在Transport和Http层面上与Asp.Net包有许多依赖关系。即使您只想使用Kestrel.Transport并实现自己的HttpServer,也需要像Kestrel.Transport.AbstractionKestrel.Transport.Socket库中的Microsoft.AspNetCore.Hosting这样的包。因此,如果您想消除这些依赖关系,您需要对所有Kestrel类库进行全面定制。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接