ASP.NET 核心构建 IIS Express 和 Kestrel?

Unk*_*per 0 asp.net iis-express kestrel-http-server asp.net-core

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

Sas*_*san 8

如果您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/"
}
}
...
Run Code Online (Sandbox Code Playgroud)

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

commandName可以有一个这些:

  • 信息系统

  • IISExpress

  • 项目(使用 Kestrel)

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

dotnet run --lauch-profile <profile_name>
Run Code Online (Sandbox Code Playgroud)

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