【发布时间】:2013-10-11 10:59:39
【问题描述】:
现在我决定寻求帮助。在对我的问题进行了 2 天的调查后,我无法找到任何解决方案。也许我在这里会更幸运!
所以这是我的问题:
在我们的生产服务器(Windows Server 2008)上,我们有一个 Windows 服务正在运行,它负责自动运行一些作业。这些作业可通过 Web 应用程序进行配置,并允许用户执行以下操作: - 创建具有一项或多项任务的工作(顺序任务) - 定义工作计划(每天、每月……) - 手动运行任务
当服务找到要运行的作业时,它会从数据库中检索信息并按顺序执行每个任务。为了执行任务,服务实例化一个对象对应的任务并执行它(不同类型的任务可用并位于不同的程序集中)
在我失败的情况下:
- 位于 ComponentsA.Tasks.dll 中的 Task1 被执行。 => 成功
- 在Task1中,位于ModuleA.Logic.dll中的MethodA()被调用=>成功
- 在 MethodA() 中,位于 ModuleA.Data.dll 中的 GetData() 被调用 => FAILED
此时我检索到以下错误消息:
Could not load file or assembly ‘ModuleA.Data.dll’ or one of its dependencies. Access is denied.
融合日志结束显示如下:
*ERR: Setup failed with hr = 0x80070005.
ERR: Failed to complete setup of assembly (hr = 0x80070005). Probing terminated.*
所有 DLL 都位于服务安装文件夹的根目录。权限似乎没问题(即使我使用管理员帐户运行服务并将完全控制访问权限设置给遇到问题的每个人) 注意:我们从星期五开始才面临这个严重问题。之前一切正常。根据基础架构团队的说法,他们在服务器上没有任何改变……
如果你们中的任何人有一个想法,它会节省我的一周。 谢谢
干杯 贝努瓦
【问题讨论】:
-
可能某些代码签名证书已过期?
-
代码签名是什么意思?
-
如果您有防病毒软件,请检查它是否因某种原因阻止了程序集。其他一些应用程序也可能使您的 ModuleA.Data.dll 保持打开和锁定状态,以便其他应用程序无法读取它。
-
这是一个纯粹的 Windows 错误。也许您可以通过使用 SysInternals 的 ProcMon 实用程序来了解更多信息。至少你会看到任何非托管 DLL 被隐式加载,这是 Fuslogvw 看不到的。
-
@Hans Passant,我已经尝试过使用 ProcMon,但没有发现任何特别之处,但感谢您的想法。
标签: .net windows-services windows-server-2008