asp.net - 在没有 IIS 和 VS 2017 的情况下使用 Kestrel

标签 asp.net .net asp.net-core .net-core

依赖于 Microsoft 文档:

https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/?view=aspnetcore-2.0&tabs=aspnetcore2x

Kestrel 可以单独使用,也可以与反向代理服务器一起使用,例如 IIS、Nginx 或 Apache。反向代理服务器接收来自 Internet 的 HTTP 请求,并在经过一些初步处理后将它们转发到 Kestrel。

如果没有 Kestrel 或自定义服务器实现,就无法使用 IIS、Nginx 和 Apache。 ASP.NET Core 被设计为在自己的进程中运行,以便它可以跨平台保持一致的行为。

但是当我运行 Visual Studio 2017 时,始终运行 IIS Express。那么如何单独依赖 kestrel(如果可能的话)取决于 MS 文档。

最佳答案

您可以从VS2017中的工具栏更改启动应用程序

enter image description here

在上面的示例中,Visual Studio 将在 IIS Express(带有勾号的项目)中托管我的应用程序。如果您想将其作为 Kestrel 托管应用程序运行,那么我会从下拉列表中选择 WebApplication2。现在,当我启动应用程序时,它将从命令提示符窗口运行。

如果您使用的是 .NET Core 2.0,那么您的 Program.cs 文件应如下所示:

public class Program
{
    public static void Main(string[] args)
    {
        BuildWebHost(args).Run();
    }

    public static IWebHost BuildWebHost(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build();
    }
}

在幕后(在 Build() 方法中)ASP.NET Core 将添加调用,以确保您的应用程序将在 IIS 和 Kestrel 中运行,而无需您进行任何更改。

关于asp.net - 在没有 IIS 和 VS 2017 的情况下使用 Kestrel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50351849/

相关文章:

c# - 注入(inject)的 IPrincipal 是匿名的,但 Web API Controller 用户对象已通过身份验证

c# - 为什么 HttpPostedFile 在 View 的操作方法中出现 null ?

.net - ListView.ItemCollection.Contains() 如何工作?

c# - 在 Entity Framework 中使用预加载时 ASP NET Core 崩溃

c# - WCF 服务的 basicHttpBinding 上的 HTTPS

asp.net - 我怎样才能进行常规 PayPal 交易的反向交易? (支付给客户而不是他们付给我们)

c# - 是否可以将像 C# struct 这样的联合序列化为 XML?

c# - 在 winforms TreeView 中设置第一个节点的位置/边距

asp.net-core - Openiddict 无法解析类型 'OpenIddict.Core.IOpenIddictApplicationStore` 的服务

c# - 服务生命周期 transient vs 作用域 vs 单例