exePath是ConfigurationManager.OpenExeConfiguration中的无效异常

Dan*_*lov 5 c#

我有一个安装到C:\ Windows\System32的Windows服务.它有一个通常的.config文件,其中存储了一些应用程序设置.我有另一个应用程序,它将一些值写入此配置.当我运行这个应用程序时,它会在此行引发异常

var config = ConfigurationManager.OpenExeConfiguration(serviceExePath);

例外情况说:加载配置文件时出错:参数'exePath'无效.参数名称:exePath

当我把我的Windows服务放到另一个文件夹时,一切都还可以!是因为某些访问违规规则还是类似的?有没有办法为我的服务使用System32文件夹并打开其配置?

操作系统:Windows 7 x64

Jam*_*ing 7

请注意,尽管参数的名称为'exePath',但您应该传入.config文件的名称,因此您可能需要根据serviceExePath文件夹中的内容附加".config".

http://msdn.microsoft.com/en-us/library/ms224437.aspx

exePath

键入:System.String

配置文件的路径.配置文件与可执行文件位于同一目录中.

就目前而言,我感觉它正在尝试加载实际的.exe作为配置文件,这无疑解释了为什么它认为它无效:)


Han*_*ant 6

对于文件位置来说,这是一个糟糕的选择.该目录属于Windows,不适合您自己的应用程序.首先,您需要管理员权限才能打开该目录中的文件.如果没有清单来触发UAC提示,则无法获得.

另一方面,该目录在x64版本的Windows上进行虚拟化.尝试访问文件的32位应用程序将重定向到c:\ windows\syswow64.

如果您发布堆栈跟踪,我可能会更准确.但是,就是不要这样做.