2014-11-03 77 views
0

我有一个简单的C#windows服务与应用程序配置,其中包含一个自定义部分映射到我的课。此外,该类位于与我的可执行文件不同的程序集中,但该程序集位于可执行文件的同一文件夹中。 我想要做的是通过installutil实用程序安装服务,然后管理OnAfterInstall事件,以便在运行时对我的应用程序配置进行一些操作。管理从Windows服务的应用程序配置部分

不过,我总是得到一个异常时,我试图让我的课的部分:

ConfigurationManager.GetSection("myCustomSection"); 

异常说我的应用程序无法找到我的课的类型定义(参考丢失或其他文件不发现exeception(这是在一个又一个集会,但在同一个文件夹的我的服务)。

我注意到的是,在OnAfterInstall(由installutil称呼)的environment.currentDirectoryC:\windows\microsoft.NET\framework\v40..,我认为这是为的原因问题。应用程序域与我的预期不同,很可能是“这是个问题。

总之,如果我尝试在服务安装程序的OnAfterInstall事件中这样做,似乎不可能读取和写入我的应用程序配置部分。 有什么解决方法吗?

+0

app.config在许多场景中很常见,例如Windows服务,控制台应用程序,wpf应用程序等。所以,我的自定义配置类在另一个程序集中。 – bit 2014-11-03 19:31:48

+0

我已经解决了以下计算器后的问题: http://stackoverflow.com/questions/1682681/custom-config-section-could-not-load-file-or-assembly – bit 2014-11-03 20:15:08

回答

-1

我知道你应该已经考虑过这一点,但作为我的Windows服务的配置信息的编写,我从来没有写过文件。特别考虑它与另一个应用程序/程序集共享信息。我宁愿总是在Windows注册表中编写配置,然后在应用程序/服务启动时加载它。

另外,在安装过程中,您可以设置这些设置。这将被放置在大多数用户不会更改它的区域,并且根据您放置密钥的位置(只有具有安装权限的用户才能够写入/删除条目),它也会使其更安全。

第二个选项和我最喜欢的第二个选项是创建另一个类(xml serializable)作为您的配置信息。然后您可以读取/写入该文件,并且对技术用户来说也是非常易读的。你可以设置这个appconfig.xml保存在用户/系统的Windows注册表项。