[App Pool在关闭VS2019之后正在停止

问题描述 投票:0回答:2

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

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

如果我仅停止调试器,则不会发生,仅在停止调试代码后关闭Visual Studio 2019之后才会发生。

我尝试了几件事,但没有解决问题。

有人曾遇到过吗?

iis .net-core visual-studio-2019 application-pool .net-core-3.1
2个回答
0
投票

我认为这是预期的行为。

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

如果要使其持久存在,则需要使用Express以外的本地IIS实例进行调试。


0
投票

我在Viual Studio和本地IIS上尝试了相同的操作。当我关闭Visual Studio时,工人操作也会被终止。

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

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

.  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时将看到应用程序池停止。enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.