【问题标题】:ASP.NET Core launch settings: IIS Express, IIS, Project, ExecutableASP.NET Core 启动设置:IIS Express、IIS、项目、可执行文件
【发布时间】:2018-08-11 15:30:52
【问题描述】:

我目前缺乏 Google 技能。我什么时候应该使用 IIS Express 与 IIS 与 Project 与 Executable?各有什么优缺点?

【问题讨论】:

    标签: visual-studio asp.net-core


    【解决方案1】:
    • IIS Express:在 IIS Express 开发服务器后面运行 ASP.NET Core 应用程序的常见默认设置。这是一个很好的默认设置。
    • IIS:当您实际安装了完整的 IIS 后,您可以进行设置,以便您的应用程序直接在 IIS 后面运行。这对于开发来说并不是一个好的选择,至少对于 ASP.NET Core 来说不是,而且我什至不知道这是否适用于 ASP.NET Core。
    • Project:这会将应用程序作为控制台应用程序运行。因此,这与从命令行运行 dotnet run 相同。这也是一个很好的调试选项,可以直接看到日志输出。根据您的目标生产环境,这甚至可能比在 IIS Express 后面运行更有意义。
    • 可执行文件:这允许您运行任意可执行文件。这对于运行 ASP.NET Core 项目并没有真正的用处。

    所以基本上归结为 IIS Express 或 Project。这两个也是在 ASP.NET Core 应用程序模板附带的launchSettings.json 文件中默认正确配置的。

    您更喜欢 IIS Express 还是直接运行应用程序可能取决于个人喜好。因此,只需尝试一下,看看哪种感觉更适合您。

    【讨论】:

    • 我其实更喜欢使用 Executable 进行开发。我使用 'dotnet' 作为 executablePath 和 'watch run --urls http://*:5000'。这允许在保存时重新编译。很方便。
    • 使用 IIS Express 配置文件,我们有 2 台服务器 - IIS Express + Kestrel,对吗?真正的原因是什么?
    • @Loreno Kestrel 始终作为 ASP.NET Core 的应用程序服务器存在。这有很多原因,但基本上只是使用 IIS 需要以非常特定的方式构建应用程序(基本上是托管的 ASP.NET)。这不适用于 ASP.NET Core 的构建方式(与 IIS 分离)。相反,您拥有一个速度极快的 Kestrel Web 服务器,而 IIS 仅充当 Kestrel 的反向代理。所以大部分工作都是由 Kestrel 完成的。 IIS 和 IIS Express 只是充当公共服务器,它们自己并没有做太多事情。
    • @poke “托管 ASP.NET”到底是什么意思?如今,“托管”一词似乎在许多情况下都被使用
    • @Loreno 就 IIS 而言,这基本上意味着应用程序由 IIS 管道内的 IIS 应用程序池运行。在这种模式下,应用程序基本上是一个“IIS 应用程序”,但专门用于 IIS 托管模型。 – 当您在 IIS 中托管 ASP.NET Core 时,您会完全禁用此托管管道,并且应用程序不会作为 IIS 管道的一部分运行。相反,它是一个单独的服务器应用程序(但出于性能原因进行了一些特殊集成)。
    猜你喜欢
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2018-06-02
    • 2022-07-15
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多