【问题标题】:IIS Express vs dotnet run [duplicate]IIS Express 与 dotnet 运行 [重复]
【发布时间】:2020-05-28 12:43:27
【问题描述】:

其实我知道IIS Express是轻量级的开发服务器。另一方面,“dotnet run” 将应用程序作为控制台应用程序运行并将其绑定到随机端口。

但实际的区别是什么?我可以通过IIS Express"dotnet run" 启动大型企业应用程序,这两种情况都可以完美运行。

到目前为止,我看到的所有区别是IIS Express 将图标添加到任务栏,dotnet run 允许查看控制台输出。但这些都是细微的差别。 IIS Express如今如此普及应该是一些全球性的原因。

一些结构化可以在这里找到:ASP.NET Core launch settings: IIS Express, IIS, Project, Executable。但它仍然无法解释差异。

【问题讨论】:

  • 最初您可以关注我的博客文章以了解差异,blog.lextudio.com/… 但是对于进程内托管(.NET Core 2.2),情况更加复杂。难怪很难找到合适的材料。

标签: c# visual-studio iis .net-core


【解决方案1】:

dotnet run 将使用嵌入式 Kestrel 服务器。 IIS Express 将使用 IIS Express 作为反向代理,在后台调用 Kestrel。无论哪种情况,服务器都在托管您的应用程序。

您可以通过调整运行配置来切换本地服务器选择。 IIS Express 将使用...IIS Express。但是,如果您改为选择项目(在屏幕截图的情况下,它的标题为weatherapi),它将改用 Kestrel。您将看到弹出一个命令提示符,显示一些基本配置数据(假设您没有更改默认日志记录输出)。第一次运行时,您可能必须接受/安装 localhost TLS 证书,以免遇到 TLS 错误。

确认您正在使用哪个进程的一种方法是在 powershell 中调用get-process,以及iisexpress{nameOfProject}

来自文档的更多信息 https://docs.microsoft.com/en-us/aspnet/core/fundamentals/servers/?view=aspnetcore-3.1&tabs=windows

【讨论】:

  • 谁能给我解释一下,你为什么要用一个而不是另一个?
  • 我和上面的评论有同样的问题。我了解 IIS 需要在生产环境中反向代理到 Kestrel(Kestrel 缺少很多功能),但为什么 IIS Express 是 ASP.NET Core 组合的一部分?它似乎没有在 Kestrel 上添加任何内容。单个启动选项会更加清晰。
  • IIS / IIS Express 的存在早于 Kestrel 和 .NET Core 多年。关于为什么仍然有两个服务器层的一个很好的解释可以在这里找到:stackoverflow.com/a/46878663/1424754
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-03
  • 2020-01-02
  • 1970-01-01
  • 2017-09-15
相关资源
最近更新 更多