C# Windows服务,app.config中的appSettings出现异常行为
我正在从事一个项目,该项目有一个共享的核心组件,它利用了相应配置文件中的C# Windows服务,app.config中的appSettings出现异常行为,c#,windows,service,config,appsettings,C#,Windows,Service,Config,Appsettings,我正在从事一个项目,该项目有一个共享的核心组件,它利用了相应配置文件中的部分 这对于使用web.config的asp.net web部件非常有效 但是,有一个Windows服务使用相同的共享核心组件,它(出于各种原因)直接从内部访问配置数据(即嵌入调用ConfigurationManager.AppSettings[“key”]),我无法轻松重构 这不是问题,但我发现web服务似乎无法获取我添加到其app.config中的appSettings值。当我将其部署到dev服务器时,它当然会变成Ser
部分
这对于使用web.config的asp.net web部件非常有效
但是,有一个Windows服务使用相同的共享核心组件,它(出于各种原因)直接从内部访问配置数据(即嵌入调用ConfigurationManager.AppSettings[“key”]
),我无法轻松重构
这不是问题,但我发现web服务似乎无法获取我添加到其app.config中的appSettings值。当我将其部署到dev服务器时,它当然会变成ServiceName.exe.config,并且配置文件在其他方面运行正常(它还包含一些按预期工作的
类型安全设置)
由于我无法轻松更改共享组件,因此我不得不在服务的app.config文件中使用
我检查过的东西:结构似乎很好:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="xxxxx.UploadManagerService.UploadManager" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<xxxxx.UploadManagerService.UploadManager>
<setting name="NumberOfUploaderThreads" serializeAs="String">
<value>2</value>
</setting>
:
</xxxxx.UploadManagerService.UploadManager>
</applicationSettings>
<appSettings>
<add key="keyname" value="value" />
:
</appSettings>
</configuration>
2.
:
:
(其中:表示“更多相同”:
服务运行正常,但核心组件中的方法尝试访问任何
值的情况除外
有没有办法让它在Windows服务中正常工作?我看不出为什么它不能正常工作,但它不能(当它试图访问任何值时抛出异常)
这里有一个类似的地方,它会掉下来:
return SendEmailViaAmazonSES(
new List<string> { clientEmailAddress },
ConfigurationManager.AppSettings["SalesEmail"],
"Order Confirmation.",
content);
返回SendEmailViaAmazons(
新列表{clientEmailAddress},
ConfigurationManager.AppSettings[“SalesEmail”],
“订单确认。”,
内容);
…幸运的是,它被困在一个try:catch中,因此除了那些ConfigurationManager.AppSettings[“key”]
调用之外,没有什么会失败,我无法更改它们,否则会对已经使用此核心组件的其他系统造成重大影响
有什么想法吗
我检查过的其他事项:服务配置文件和服务exe位于同一文件夹中,dev config确实包含正确的值
编辑25/5
由于该服务只调用少数需要访问
值的方法,我只是通过将这些方法复制到服务本身并使用
中的值来进行欺骗。这并不理想,我仍然很想知道为什么这对Windows服务不起作用,但我不能等待,所以我不得不接受n同时做出“捏造”的务实决定。我可以在以后的某个时候再谈这个问题,或者(碰巧)把它忘得一干二净;-)文件权限
查看运行Windows服务的用户是否具有对其.config文件的读取权限
系统内部过程监视器
使用并按您的服务名称进行筛选,以查看进程是否确实试图通过您期望的路径访问您的文件。文件权限
查看运行Windows服务的用户是否具有对其.config文件的读取权限
系统内部过程监视器
使用并按您的服务名称进行筛选,以查看进程是否真的试图通过您期望的路径访问您的文件。似乎没有问题-毕竟,我可以访问这些值。我已检查以确保也只有一个配置文件。最奇怪的是。您确定异常(在不可修改的组件中捕获)是关于
ConfigurationManager.AppSettings
的,而不是其他参数吗?看起来没问题-毕竟,我可以访问这些值。我已检查以确保也只有一个配置文件。最奇怪的是。您确定异常(在不可修改组件中捕获)与ConfigurationManager.AppSettings有关,而与其他参数无关吗?