IIS Express 与 dotnet 运行 [重复]
Posted
技术标签:
【中文标题】IIS Express 与 dotnet 运行 [重复]【英文标题】:IIS Express vs dotnet run [duplicate] 【发布时间】: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),情况更加复杂。难怪很难找到合适的材料。 【参考方案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 多年。关于为什么仍然有两个服务器层的一个很好的解释可以在这里找到:***.com/a/46878663/1424754以上是关于IIS Express 与 dotnet 运行 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
IIS Express错误http 404.17 - 未找到运行WCF服务