【问题标题】:App Pool is stopping after closing VS2019关闭 VS2019 后应用程序池停止
【发布时间】:2020-03-20 21:09:55
【问题描述】:

我有一个 .NET Core 3.1 应用程序,每次执行以下操作时它都会在 IIS 上停止其应用程序池:

  1. 我调试我的代码
  2. 停止调试器
  3. 关闭 Visual Studio 2019

如果我只是停止调试器,这不会发生,它只会在我停止调试代码后关闭 Visual Studio 2019 后才会发生。

我尝试了一些东西,但没有解决这个问题。

以前有人遇到过吗?

【问题讨论】:

  • 我已将此报告为错误。这让我发疯,我在 Server 2019 上进行调试,其中有很多 Web 应用程序充当 API 服务,并且我不断打开和关闭不同的 VS 实例。很烦人。

标签: iis .net-core visual-studio-2019 application-pool .net-core-3.1


【解决方案1】:

我在我的 Viual 工作室和本地 IIS 上尝试了同样的事情。当我关闭视觉工作室时,工作人员也会被终止。

因此审查了事件查看器,但当时没有任何记录。 然后我为断点ntdll!NtTerminateProcess创建了调试诊断工具规则。此时,生成了一个转储。

这是所有线程的完整堆栈跟踪

.  0  Id: 688.415c Suspend: 1 Teb: 00000039`02299000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`0247f938 00007ffb`15c6a954 ntdll!NtTerminateProcess
01 00000039`0247f940 00007ffb`1486cd8a ntdll!RtlExitUserProcess+0x54
02 00000039`0247f970 00007ffb`147da245 kernel32!ExitProcessImplementation+0xa
03 00000039`0247f9a0 00007ffb`147da8b5 msvcrt!_crtExitProcess+0x15
04 00000039`0247f9d0 00007ff7`79ca3214 msvcrt!doexit+0x171
05 00000039`0247fa40 00007ffb`14867bd4 w3wp!__wmainCRTStartup+0x164
06 00000039`0247fa80 00007ffb`15c6ced1 kernel32!BaseThreadInitThunk+0x14
07 00000039`0247fab0 00000000`00000000 ntdll!RtlUserThreadStart+0x21

   1  Id: 688.afc Suspend: 1 Teb: 00000039`022a3000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`026ff848 00007ffb`15c34060 ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 00000039`026ff850 00007ffb`14867bd4 ntdll!TppWorkerThread+0x300
02 00000039`026ffc10 00007ffb`15c6ced1 kernel32!BaseThreadInitThunk+0x14
03 00000039`026ffc40 00000000`00000000 ntdll!RtlUserThreadStart+0x21

   2  Id: 688.3f78 Suspend: 1 Teb: 00000039`022a5000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`0277f858 00007ffb`13266951 ntdll!NtDelayExecution+0x14
01 00000039`0277f860 00007ffb`0aba6bdb KERNELBASE!SleepEx+0xa1
02 00000039`0277f900 00007ffb`0ab748e4 winhttp!SafeTerminateDll+0xcb
03 00000039`0277f940 00007ffb`15c305ac winhttp!FailFastThreadpoolWaitCallback<&SafeTerminateDll>+0x14
04 00000039`0277f980 00007ffb`15c341c2 ntdll!TppExecuteWaitCallback+0xa4
05 00000039`0277f9d0 00007ffb`14867bd4 ntdll!TppWorkerThread+0x462
06 00000039`0277fd90 00007ffb`15c6ced1 kernel32!BaseThreadInitThunk+0x14
07 00000039`0277fdc0 00000000`00000000 ntdll!RtlUserThreadStart+0x21

   3  Id: 688.748 Suspend: 1 Teb: 00000039`022b9000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`02bff848 00007ffb`15c34060 ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 00000039`02bff850 00007ffb`14867bd4 ntdll!TppWorkerThread+0x300
02 00000039`02bffc10 00007ffb`15c6ced1 kernel32!BaseThreadInitThunk+0x14
03 00000039`02bffc40 00000000`00000000 ntdll!RtlUserThreadStart+0x21

   4  Id: 688.3b38 Suspend: 1 Teb: 00000039`022bd000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`02cffad8 00007ffb`132784c3 ntdll!NtRemoveIoCompletion+0x14
01 00000039`02cffae0 00007ffa`b8a238e2 KERNELBASE!GetQueuedCompletionStatus+0x53
02 00000039`02cffb40 00000000`00000000 <Unloaded_aspnetcore.dll>+0x38e2

   5  Id: 688.3cf8 Suspend: 1 Teb: 00000039`022c9000 Unfrozen
 # Child-SP          RetAddr           Call Site
00 00000039`024ff788 00007ffb`15c34060 ntdll!NtWaitForWorkViaWorkerFactory+0x14
01 00000039`024ff790 00007ffb`14867bd4 ntdll!TppWorkerThread+0x300
02 00000039`024ffb50 00007ffb`15c6ced1 kernel32!BaseThreadInitThunk+0x14
03 00000039`024ffb80 00000000`00000000 ntdll!RtlUserThreadStart+0x21

您可以看到,当您关闭 Visual Studio 时,它只是调用了一个安全终止函数并终止了进程。没有产生奇怪的行为或异常。所以它必须是设计的。

如果您转到 IIS 管理器,您将看到应用程序池在您关闭 VS 时停止。

如果您不希望 Visual Studio 损坏您的 IIS 工作进程。然后请在其他配置文件环境中调试,并将发布版本发布到本地 IIS。

【讨论】:

    【解决方案2】:

    我认为这是预期的行为。

    默认情况下,Visual Studio 使用 IIS Express 来托管您的网站。 IIS Express 是一项服务,它在您开始调试时由 Visual Studio 启动并继续运行,直到您关闭 Visual Studio(或手动停止它)。

    如果您希望它持续存在,那么您需要使用 Express 以外的本地 IIS 实例进行调试。

    【讨论】:

    • 我正在使用本地 IIS
    猜你喜欢
    • 2023-03-02
    • 2015-07-03
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 2018-07-17
    • 1970-01-01
    相关资源
    最近更新 更多