【问题标题】:ASP.NET core builds both IIS Express and Kestrel?ASP.NET 核心同时构建 IIS Express 和 Kestrel?
【发布时间】:2018-03-08 17:25:11
【问题描述】:

我在 VS 2017 中使用 ASP.NET Core。我想知道构建应用程序时是否同时创建 IIS Express and Kestrel?还是只是其中之一?我说的是本地。

【问题讨论】:

  • “创建”是什么意思?无论您使用 Kestrel 还是 IIS,二进制文件都是相同的。事实上,IIS 在幕后运行 Kestrel。
  • 那些是网络服务器。哪个主机/运行您的应用程序。请澄清您的问题
  • 本地按 Ctrl-F5

标签: asp.net asp.net-core iis-express kestrel-http-server


【解决方案1】:

如果您在“属性”部分查看您的launchSettings.json 文件。您将看到您的启动配置文件。例如:

...
"profiles": {
"IIS Express": {
  "commandName": "IISExpress",
  "launchBrowser": true,
  "launchUrl": "https://localhost:44376/",
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  }
},
"WebApplication1": {
  "commandName": "Project",
  "launchBrowser": true,
  "environmentVariables": {
    "ASPNETCORE_ENVIRONMENT": "Development"
  },
  "applicationUrl": "http://localhost:50768/"
}
}
...

这些配置文件指定您的应用程序将如何使用哪些设置和环境变量运行。您可以使用不同的设置拥有任意数量的启动配置文件。

commandName 可以有一个:

  • IIS

  • IISExpress

  • 项目(使用 Kestrel)

您可以使用 VS 中“运行”按钮旁边的下拉菜单或使用以下命令来更改启动配置文件:

dotnet run --lauch-profile <profile_name>

不建议将 Kestrel 用于生产,但可以用于开发。即使您选择IIS 或IISExpress,也将始终使用 Kestrel(除非您使用仅适用于 Windows 的 HTTP.sys)。因此,无论您在生产环境(IIS、nginx、Apache)或开发环境中使用何种 Web 服务器,它们都会在处理完请求后将请求传递给 Kestrel。

【讨论】:

    【解决方案2】:

    您的问题根本不清楚。红隼总是使用。 IIS Express 充当 Krestrel 的反向代理。但是,在这方面没有“创造”任何东西。构建核心应用程序后,您只需使用应用程序本身即可。托管它的功能是外部的。您可以构建为自托管应用程序,在这种情况下,您将获得可执行文件而不是 DLL。但是,这永远不会成为调试或在 Visual Studio 中本地运行的一部分:您的应用程序将始终构建为 DLL。

    在 Visual Studio 2017 的旧版本中,过去可以将应用程序作为自托管或在 IIS Express 中运行/调试,如果这就是您所说的。但是,该选项已被删除。现在,运行/调试始终使用 IIS Express。

    【讨论】:

    • 在没有 IIS Express(或使用完整的 IIS)的情况下仍然可以运行/调试应用程序。可以在项目属性->调试中配置,也可以手动编辑launchSettings.json
    • 根据您的解释,我提出了这个问题:“是否可以直接与 IIS Express 后面的 Kestrel 实例对话”?或相关问题:Kestrel 在哪个端口上与 IIS Express 通信?
    • 这不是一个端口。它作为 IIS 模块运行。无法与 Kestrel 交谈。
    • 这个怎么样:The following characteristics apply when hosting in-process: IIS HTTP Server (IISHttpServer) is used instead of Kestrel server 见:docs.microsoft.com/en-us/aspnet/core/host-and-deploy/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-02
    • 2016-09-03
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多