小编Pau*_*ams的帖子

Windows 服务限制在启动时使服务崩溃

我们已经在 C# 中开发了一个自定义 Windows 服务,作为大型企业应用程序的一部分。我们的 QA 部门测试了此服务的多个版本。

QA 实验室在一个 Windows 2003 测试盒上安装了此服务的多个(超过 20 个)副本。每个副本都在自己的文件夹中,并具有唯一的服务名称,但每个可执行文件的名称都相同(例如,OurWindowsService.exe)。每个服务都使用相同的 Windows 凭据(域用户)。

此服务的目的是处理 MSMQ 消息。排队的消息做各种重要的事情。

出于某种原因,他们一次只能运行 5 个这些服务。当我们启动 6th 时,服务在启动时崩溃。

例如,我可以开始#1、#2、#3、#4 和#5。当我开始#6 时,它崩溃了。但是,如果我停止#1 并启动#6,#6 运行良好,现在#1 无法启动。

当服务崩溃时,Windows 事件日志中会出现以下错误:

错误应用程序 OurWindowsService.exe,版本 5.40.1.1,错误模块 kernel32.dll,版本 5.2.3790.4480,错误地址 0x0000bef7。

我能够使用 WinDbg 生成事后转储文件。转储文件显示崩溃发生在试图延迟加载 SHLWAPI.dll:

0:000> kb100
ChildEBP RetAddr  Args to Child              
0012ece4 79037966 c06d007e 00000000 00000001 KERNEL32!RaiseException+0x53
0012ed4c 790099ba 00000008 0012ed08 7c82860c mscoree!__delayLoadHelper2+0x139
0012ed98 790075b1 001550c8 0012edac 0012fb34 mscoree!_tailMerge_**SHLWAPI_dll**+0xd
0012edb0 79007623 001550c8 0012edf8 0012edf4 mscoree!XMLGetVersionWithSupported+0x22
0012ee00 790069a4 aa06f1b0 00000000 000001fe mscoree!RuntimeRequest::GetRuntimeVersion+0x56
0012f478 …
Run Code Online (Sandbox Code Playgroud)

windows-server-2003 windows-service

6
推荐指数
1
解决办法
1228
查看次数