【问题标题】:IIS Express not stopping when debug session ends调试会话结束时 IIS Express 未停止
【发布时间】:2018-06-15 09:40:56
【问题描述】:

当我停止在 Visual Studio 2017 中调试网站时,IIS Express 突然不再停止。

我不确定此行为何时开始,但我有以下设置:

  • Visual Studio 15.5.2(已修复)
  • IIS Express 10.0 x64(重新安装)
  • 一个针对 net461 的 ASP.Net Core 2 项目
  • 我在工具 -> 选项 -> 调试 -> 常规中禁用了“启用编辑并继续”

不确定这是什么时候开始发生的,也许是我更新到最新的 VS 版本时。

我还能尝试什么?

【问题讨论】:

  • 关闭“启用编辑并继续”实际上是允许这种行为。
  • @ChrisPratt 好的,是的,我看到了一些关于此的相互矛盾的信息,所以我实际上都试过了......
  • 我所知道的是,我实际上更喜欢您似乎想要摆脱的行为,并且在调试结束后保持 IIS Express 运行的方法是取消选中该框.
  • @ChrisPratt 好吧,它导致我的问题是有时我无法构建和启动新的调试会话,因为 Visual Studio 无法访问某些文件,因为它们被另一个进程(IIS快递是我的猜测)。是的,那个 .NET Framework 设置不存在,因为它是一个面向 .NET Framework 4.6 的 .NET Core 2 项目。奇怪的是,这只是几天前才开始发生的。项目设置没有任何变化。我唯一能想到的就是将 Visual Studio 更新到最新版本。
  • 同样烦人的问题。抱歉,关闭上述选项不起作用。

标签: asp.net-core visual-studio-2017 iis-express asp.net-core-2.0


【解决方案1】:

如果 Enable Edit and Continue未选中 然后IIS Express 保持运行即使在调试停止后。

如果您愿意,可以在此处取消选中它:

右键单击您的项目»单击Properties »选择Web标签»Enable Edit and Continue复选框

【讨论】:

  • 为什么?如果 VS 停止调试,则无需编辑并继续!我错过了什么?
  • @NourSabouny,IIS Express 是一个 Web 服务器,因此它可以保持运行...您可以在系统上使用实时网站并查看功能的结果并根据它们更改您的代码当网站未处于调试模式时。所以在某些情况下它可能很有用。您也可以更改视图并刷新相关页面并在此模式下跟踪更改。虽然我通常喜欢使用 Edit and Continue = ON,因为它为我提供了一些有用的功能,可以在运行时更改代码并重新运行它并查看结果,而无需重新启动整个项目。
【解决方案2】:

适用于 Visual Studio 2017 中的 .net Core Web 项目

如果添加:

<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>

或:

<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>

在您的 project.csproj 配置的第一个 PropertyGroup 中,您将更改 iis express 行为。

  • InProcess 将在调试后终止 iis express。

  • 如果设置缺失或设置为 OutOfProcess,iis express 将保持进程运行。

- 此设置会更新您的解决方案的 .vs\config\applicationhost.config,并且 hostingModel="InProcess" 将被添加/删除到项目的 iis express 启动配置中。

  <aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" hostingModel="InProcess" />

(applicationhost.config无需更改,仅供参考)

【讨论】:

  • 完美,尤其是关闭编辑/继续有点愚蠢,因为它很有用:-)
  • 它在 VS2019 中工作,请确保重新打开解决方案或卸载并重新加载项目。
  • @Palanikumar 不需要。
  • 这适用于哪个版本的 AspNetCore?我用的是2.1,没有效果。
【解决方案3】:

有一个选项可以控制 Visual Studio 中的行为。

编辑并继续位置

最新的 VS 2017 更新一定已经开启了。

再次关闭标记的选项时,IIS Express 会在结束调试会话时停止。

【讨论】:

  • 这是一个答案还是只是一个咆哮?
  • 这种看起来不错的答案,所以我把所有的吐槽都删了。
  • 谢谢。对于 VS 2017,它现在​​是一个非常有效的答案
【解决方案4】:

适用于 Visual Studio 2019 中的 .net Core Web 项目

右键单击您的项目 » 单击属性 » 选择调试选项卡 » 选择托管模型。

In Process:当您停止调试器时,IIS Express 将停止。 进程外:停止调试器后,IIS Express 将继续运行。

【讨论】:

  • 我一直在寻找这个。非常感谢
【解决方案5】:

显然,在 ASP.NET Core 中不停止 IIS Express 是设计使然:https://github.com/dotnet/project-system/issues/3394#issuecomment-378307654

【讨论】:

    【解决方案6】:

    在 Visual Studio 2019 中:

    工具 -> 选项 -> 项目和解决方案 -> Web 项目:“关闭浏览器窗口时停止调试器”。

    【讨论】:

    • 您能否验证这实际上在 .net CORE 3.1 或任何与此相关的核心 VS 16.5.3 中确实做了一些事情,在这篇文章中是最新的......
    • 这仅适用于您在launchSettings.json 中设置了launchBrowser
    【解决方案7】:

    如果问题偶尔出现(不可重现),它可能是 asp 或 vs 某处的问题或错误,为什么不保存项目,然后直接终止进程并重新运行它?

    【讨论】:

    • 对我来说,每次调试会话都会发生这种情况。手动杀死是我正在使用的解决方法,但它是一个 PITA,会减慢整个代码调试周期。
    【解决方案8】:

    IIS Express 将站点保持在运行状态(就像 IIS 一样),您可以转到任务栏,右键单击 IIS Express 图标,然后您将能够手动停止每个站点。

    【讨论】:

      猜你喜欢
      • 2016-04-13
      • 2017-06-10
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 1970-01-01
      相关资源
      最近更新 更多