首页 文章

如何禁用 ASP.NET Core 的 IIS Express 启动配置文件?

提问于
浏览
20

我正在编写一个使用WebListener而不是 Kestrel 的 ASP.NET 核心应用程序(在完整的.NET 框架上.)我正在使用 Visual Studio 2015 和 Update 3,以及“.NET Core 1.0.1 tools Preview 2”(最新的 VS 工具) 下载网站撰写本文时)。

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

但到目前为止,我还没有能够摆脱 VS 的“IIS Express”发布配置文件。项目属性>调试选项卡允许我编辑配置文件列表,但是当我选择“IIS Express”配置文件时,“删除”按钮被禁用。如果我直接编辑 launchSettings.json,并从“配置文件”下删除“IIS Express”元素,文件>保存操作会以静默方式将“IIS Express”配置文件插回到保存到磁盘的 JSON 中!

显然,Microsoft 确实希望始终拥有“IIS Express”启动配置文件,即使它不一定与所有 ASP.NET Core 项目兼容。但值得一提的是:有没有人找到一种方法来禁用 ASP.NET Core 项目中的“IIS Express”启动配置文件,并且 launch-profile 选择器中只有 self-host option(s?

¹对于好奇的人,我正在使用 WebListener,因为它会在没有安装 IIS 的计算机上让我在 Windows 服务中 self-host 并仍然支持 NTLM 身份验证。 Kestrel 仅在 IIS 中托管时支持 NTLM,而不是在 self-hosted 时托管。

5 回答

  • 2

    更新:

    应该使用 Visual Studio 2017 的最新版本(更新)修复此问题。

    初答:

    正如史密斯回答中的注释中所述,Visual Studio 会在重新启动时继续恢复设置。

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

    • 最后一次更新你的launchsettings.json

    • 关闭 Visual Studio。

    • 打开安全设置(在资源管理器的 launchsettings.json 上 right-click - >属性 - >安全性)

    • 单击高级 - >更改权限

    • 从“权限条目”列表中选择“经过身份验证的用户”(或在您的计算机上运行 Visual Studio 的其他用户组),然后单击“编辑” - >

    • 选中“拒绝”以获取“创建文件/写入数据”权限。

    • 在所有打开的对话框和警告中单击“确定”以保存更改。

    • 重新打开 Visual Studio,看它无法更新。

    希望能帮助到你。

  • 1

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

    删除红色框中的内容:
    在此输入图像描述

    现在只显示其他配置文件:
    在此输入图像描述

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

  • 1

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

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

  • 1

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

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

    在此输入图像描述

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

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

    设置预构建事件

    这应该在 build/run/etc 上有效地复制它。

  • 0

    以下对我有用:

    • 打开项目属性

    • 在“调试”选项卡中,选择 IIS 配置文件,然后单击“删除”。

    • 在 Launch 组合中,选择Project

    • 打开项目文件(编辑项目文件)

    • 添加以下内容作为<PropertyGroup>中的第一个条目

    <OutputType>Exe</OutputType>

相关问题