ChatGPT解决这个技术问题 Extra ChatGPT

IIS Express 在停止 Web 应用程序后立即关闭正在运行的站点

我想在 IDE 中停止应用程序的第一天使用 Visual Studio 2012,应用程序仍在 IIS Express 上运行,我可以浏览和使用正在运行的应用程序,但现在我不能。如果我按下停止按钮,IIS 会立即关闭应用程序。因为我记得我没有对设置进行任何更改。我应该如何像第一天一样运行。

尝试“在浏览器中查看”而不是“播放”。你是不是改了默认浏览器? IE 会在停止时自动关闭,Chrome 不会。
不,我使用的是 FF,但有时我需要调试应用程序。
我认为这与 IIS Express 有关。
除了单击停止按钮,您还可以使用“调试”菜单中的“全部分离”。
它将调试器与正在调试的进程分离,但不会终止正在进行的进程。

K
Kev

我最近遇到了类似的情况,当我停止调试后,我的 IIS Express 突然停止了。这发生在我打开“启用编辑并继续”之后。因此,如果禁用此功能,您将看到即使在调试停止后 IIS Express 仍保持运行。

右键单击您的项目 >点击属性>选择左侧的“Web”选项卡 >取消选中 Enable Edit and Continue 复选框。


我可以确认这为我解决了这个问题。
这有效!右键单击您的项目>单击属性>选择左侧的“Web”选项卡>取消选中“启用编辑并继续”复选框。
有用。在 Visual Studio 2013 打开 "Tools-> Options" ,在树中选择 "Debugging->Edit and Continue" 并取消选中 "Enable Edit and Continue" 框。
您可以在此处详细了解此功能:blogs.msdn.com/b/webdev/archive/2013/07/11/…
不,这是一个糟糕的解决方案 - 请参阅下面@jessehouwing 发布的正确解决方案。
g
giammin

在 VS2010 和 VS2012 中,创建新的 Web 应用程序项目时,默认禁用编辑和继续选项。在 VS2013 中它默认是打开的。

您可以在 Web 项目的属性窗口的 Web 选项卡上找到此选项。

https://i.stack.imgur.com/AN7SQ.png

启用“启用编辑并继续”后,VS 调试器将在 IIS Express 中启动您的 Web 应用程序。当您停止调试时,IIS Express 也会关闭。使用此行为,您将看到 IIS Express 系统托盘在调试期间出现并在调试后消失。当启用编辑并继续选项打开时,此行为与 VS2012 中的相同。

如果您在开发过程中不需要“编辑并继续”功能并且希望 IIS Express 在调试会话后保留,您只需关闭“启用编辑并继续”选项即可。

如果您想使用“编辑并继续”或者您正在开发一个 Asp.net 5 站点(ASP.NET 5 项目在项目属性中没有“编辑并继续”复选框),您必须使用“Detech all”命令来停止调试。

调试器将与 iis 进程分离而不关闭它。

显然,在您再次开始调试之前,“编辑并继续”功能将不起作用。

https://i.stack.imgur.com/76LzA.png


一张照片值一千个字:D
J
Josh M.

您可以使用调试菜单中的 Detach all 菜单项,而不是点击 (X) STOP 按钮。主要区别在于停止按钮将终止当前正在调试的任何进程,而 Detach All 将断开调试器与进程的连接,但不会终止它们。

正常的 IIS 工作进程也会被终止,但由于它曾经作为服务运行,它也会自动重新启动,因此您可以继续使用它而无需通过 |> Debug|> Start without debugging 重新启动进程.

截图供参考

https://i.stack.imgur.com/lAm3W.png


这实际上更接近真正的答案..“编辑并继续”选项是一个功能.. 将调试跟踪器附加和分离到侦听过程是这里讨论的下划线概念,以及单击停止是否终止该侦听过程或只是与它分离..当然你也可以重新连接。
@jcmcbeth 它确实适用于 IIS Express.. 我不可能看到它不起作用... IIS Express 进程就是这样,它们自己的单独进程.. 您的 VS 调试器正在启动该进程并附加到它..但是该进程不再依赖于您附加的调试器来运行,而不是您的应用程序或网络服务器需要访问者/用户代理/客户端在 proc 中运行
@jcmcbeth,当您谈论功能支持和设置时,在问答网站上说这很奇怪。这不是一个接受它或离开它的场景;您说它似乎不适用于 IIS Express。确实如此。
“启用编辑并继续”复选框在 VS 2015 RC 中不存在于 ASP.NET 5 项目中,因此如果您想将 IIS Express 与这些项目一起使用,这就是要走的路。
这是 VS 2015 Update 2 如何通过从 Project web 选项卡中删除 Edit and Continue 来改变 IIS 行为的答案。
t
tocqueville

似乎自 Visual Studio 2015 Update 2 发布以来,公认的解决方案不再有效。

到目前为止,我发现的最简单的解决方案是通过从 Debug 菜单中选择“Start without Debugging”来启动项目。


听起来你在谈论VS2015。
该死的,我刚刚遇到了这个问题,posted question 对此。是否有任何已知的解决方法来解决这个问题 - 除了将快捷方式重新绑定到 Start without Debugging 和 Detach 而不是 Stop?
他们说他们将在下一次更新中修复它,同时您可以使用的另一个技巧是按 ctrl+F5 以在不调试的情况下启动站点:connect.microsoft.com/VisualStudio/feedback/details/2562576/…
b
b_levitt

这可能最好归类为另一种解决方法,但它对我有用。

我通常使用“在浏览器中查看”上下文菜单(或 CTRL-Shift-W)第一次启动项目。

从那时起,任何需要调试的东西,我通常都会附加到新的现有 iisexpress 进程中。虽然通过上下文菜单鼠标将使其无法启动,但它几乎与 F5 一样快,具有以下击键:

Shift-F6 构建当前项目或 Ctrl-Shift-B 构建整个解决方案(仅当您进行了更改时才需要这样做,但我认为我应该提及它,因为 F5 已经这样做了)。

Ctrl-Alt-P 打开附加到进程对话框

键入“iis”将带您进入 iisexpress 流程

按回车键,您已连接

如果你有不止一个 iisexpress 运行,最后一个启动的通常会出现在列表的顶部。另一种选择是移位选择并附加到所有这些。

这有许多 IMO 的优点。首先,它不会终止进程。其次,停止调试时浏览器窗口不会关闭。当我看到开发人员重复 7 个步骤来重现错误时,我感到很震惊,而他需要做的只是在现有浏览器窗口中按 F5 键,以便在连接调试器后重新发布。最后,我必须在附加到 nunit 时已经这样做了,所以我得到了更一致的体验。


感谢“Ctrl-Alt-P 打开附加到进程对话框”忘了它