【问题标题】:How can I disable the IIS Express launch profile for ASP.NET Core?如何禁用 ASP.NET Core 的 IIS Express 启动配置文件?
【发布时间】:2017-07-11 23:03:45
【问题描述】:

我正在编写一个使用 WebListener 而不是 Kestrel 的 ASP.NET Core 应用程序(在完整的 .NET Framework 上)。¹我正在使用带有 Update 3 的 Visual Studio 2015 和“.NET Core 1.0. 1 工具预览 2"(在撰写本文时,download site 上的最新 VS 工具)。

因为我正在使用 WebListener,并且因为WebListener is not compatible with IIS Express,我想在 Visual Studio 中禁用“IIS Express”启动配置文件,这样当我的队友打开这个解决方案时,他们的 Visual Studio 将默认运行控制台应用程序而不是 IIS Express,他们将能够直接点击运行而不会出错。

但到目前为止,我还无法摆脱 VS 的“IIS Express”启动配置文件。 Project Properties > Debug 选项卡允许我编辑配置文件列表,但是当我选择“IIS Express”配置文件时,“删除”按钮被禁用。如果我直接编辑launchSettings.json,并从“配置文件”下删除“IIS Express”元素,“文件”>“保存”操作会将“IIS Express”配置文件静默插入到它保存到磁盘的JSON中!

显然微软真的希望始终拥有“IIS Express”启动配置文件,即使它不一定与所有 ASP.NET Core 项目兼容。但值得一问:有没有人找到一种方法来禁用 ASP.NET Core 项目中的“IIS Express”启动配置文件,并且只有自托管选项( s) 在启动配置文件选择器中?

¹ 出于好奇,我使用 WebListener 是因为它可以让我在没有安装 IIS 的机器上自行托管在 Windows 服务中,并且仍然支持 NTLM 身份验证。 Kestrel 仅在托管在 IIS 中时才支持 NTLM,在自托管时不支持。

【问题讨论】:

    标签: .net visual-studio-2015 asp.net-core


    【解决方案1】:

    只需从项目属性下的 launchSettings.json 文件中删除 IIS Express 选项就足够了吗?

    删除红框中的东西:

    现在应该只显示另一个配置文件:

    请注意,我使用的是 VS2017 RC。您遇到的可能是 VS2015 中的错误。您可以尝试使用单独的文本编辑器编辑和保存 launchSettings.json 文件,看看是否适合您。不过,我可以确认这在 VS2017 RC 中可以正常工作。

    【讨论】:

    • 它真的以这种方式保存文件吗?在 VS2015 中,当我点击保存时,实际写入磁盘的文件 重新添加了 IIS Express 配置文件。但是,除非您关闭并重新打开,否则您不会在 IDE 中看到该更改文件,或在外部编辑器中打开它。
    • 所以今天我重新打开了项目,VS 2017 更新了 launchSettings.json 以将其重新添加。显然它是在项目加载时完成的。
    • +1 对于 launchSettings.json 会自动在设置下重新添加 IIS Express。当我们有“多个启动项目”并且您单击“开始”(而不是选择 IIS Express、Kestrel 等)时,我无法找到确保 kestrel 打开的方法。
    • @ssmith 您可能想要更新答案以表明该解决方案在重新加载后不起作用
    • 在 VS 2017,V 15.3 中,这似乎已修复。我测试了它并没有重新添加。
    【解决方案2】:

    更新:

    该问题应在 Visual Studio 2017 的最新版本(更新)中得到解决。

    初步答案:

    正如ssmith answer 中的 cmets 所述,Visual Studio 会在重启时不断恢复设置。

    由于找不到更好的解决方案,我只是拒绝了 Visual Studio 对 launchsettings.json 的写入权限。我在其他类似问题的答案中留下了instructions,这里只是复制和粘贴:

    1. 最后一次更新您的launchsettings.json
    2. 关闭 Visual Studio。
    3. 打开安全设置(在资源管理器中右键launchsettings.json -> 属性 -> 安全)
    4. 点击高级 -> 更改权限
    5. 从“权限条目”列表中选择“经过身份验证的用户”(或在您的计算机上运行 Visual Studio 的其他用户组),然后单击“编辑”->
    6. 为“创建文件/写入数据”权限选中拒绝。
    7. 在所有打开的对话框和警告中单击“确定”以保存更改。
    8. 重新打开 Visual Studio,发现它无法进行更新。

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      我创建了 VS 2017 扩展来处理 iis express 启动设置https://marketplace.visualstudio.com/vsgallery/e09e0342-f9af-4306-8cf5-35238e34592d

      总体思路是在执行 Build/Start/StartWithoutDebugging 命令之前为每个 .net core 项目修复 launchSettings.json

      【讨论】:

      • 如果您从不使用 IISExpress,这是一个很好的解决方法。 NTFS 技巧有效,但在项目级别选择退出很烦人。这个对源代码团队/控制更友好一些(如果它让您烦恼,请安装它。如果不是,请不要)。该行为确实应该在 VS 选项中进行配置(没有任何扩展)。开源,精心设计。我在。
      【解决方案4】:

      所以我们也一直在努力解决这个问题。我们最终做的是拥有一份“干净”的 launchsettings.json 副本,其中没有 IIS Express 的东西,然后有一个预构建脚本将干净版本复制到现有版本之上。

      1. 创建一个新文件。 launchSettings.json.pristine 与现有启动设置文件位于同一文件夹中。

      2. 添加预构建脚本以复制覆盖 IIS 设置的干净文件。

        cd ..\..\..\Properties copy launchSettings.json.pristine launchSettings.json

      这应该在构建/运行/等时有效地复制它。

      【讨论】:

        【解决方案5】:

        以下内容对我有用:

        1. 打开项目属性
        2. 在“调试”选项卡中,选择 IIS 配置文件,然后单击删除
        3. 在 Launch 组合中,选择 Project
        4. 打开项目文件(编辑项目文件)
        5. 将以下内容添加为<PropertyGroup>中的第一个条目

          <OutputType>Exe</OutputType>

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-12-01
          • 2018-06-02
          • 1970-01-01
          • 2011-10-01
          • 1970-01-01
          • 2013-10-19
          • 1970-01-01
          相关资源
          最近更新 更多