【发布时间】:2012-09-20 19:10:39
【问题描述】:
我有一个在 Windows 7 上运行的 CSharp Windows 服务。它从一个用于设备管理的框架中实例化一个 dll。此 dll 有一些设置存储在名为 'pm.config' 的 app.config 中。
我将所有程序集和 pm.config 文件复制到了与 winsvc 项目文件夹相同级别的名为“bin”的文件夹中。
我添加了对 dll 框架的引用并编译了项目。 pm.config 文件存在于“bin\debug”和“bin\release”子文件夹中。我使用 installutil 安装了 winsvc 并启动了 winsvc。一切正常,除了当 winsvc 从框架 dll 调用“Initialize”方法时,此方法尝试打开 pm.config 文件并生成以下异常:
InnerException = {"The machine.config file 'pm.config' was not found.\r\nParameter name: machineConfigFilename"}
我已经使用Assembly.GetExecutingAssembly().Location 检查了装配位置
它指向winsvc项目的正确文件夹,我的意思是'mysvcproject\bin\debug'文件夹。
我很确定这与 winsvc 的安全上下文有关,但我不知道。我正在使用 LocalService 帐户来启动 winsvc,而 'bin\debug' 没有此帐户的权限。相反,我完全控制了此文件夹上的所有人帐户,但仍然出现错误。
我完全迷路了,有人能帮帮我吗?
提前致谢
【问题讨论】:
-
我忘了提到它是一个托管 WCF 服务的 Windows 服务。我不知道是否需要一些特殊配置才能使用第三方 dll
标签: c# windows service app-config