The*_*uru 12 c# vb.net windows-services configuration-files visual-studio
我正在开发.NET Windows服务,我正在尝试存储将在服务启动和运行时使用的设置.我搜索了SO上的帖子,发现在项目属性中使用Settings非常适合与console和winforms应用程序一起使用.但是,Google和SO在使用Windows服务存储这些设置时是静默的.
有谁知道在.NET服务中使用这些设置是否合适?如果没有,序列化是我的下一个最佳选择吗?有没有人对服务中的设置有实际用途,发现最好使用特定的方法?
Ben*_*ter 12
我在使用Settings.settings时遇到了问题.例如,如果您需要在运行时进行更改,则可能存在设置被最初存储在settings.settings文件中的设置覆盖的问题,而不是应该根据app/web.config 存储的设置..因此,我在属性中将所有Web服务代理设置设置为"静态",并通过帮助程序方法从app/web.config手动提取它们并以编程方式设置它们.这避免了任何问题.
我们遇到的问题的一个例子:我将开发机器指向测试服务器上的Web服务,以测试使用Web服务的代码.当代码移动到我们的测试服务器时,没有出现任何问题 - 因为测试服务器仍指向同一测试服务器上的同一Web服务.但是,当我们将应用程序移动到生产服务器并将web.config重新配置为指向生产服务器时,我们开始收到棘手的结果.虽然我们已经重新配置了应用程序以指向生产服务器的Web服务实现,但仍需要花费相当多的精力才能确定它仍然连接到测试服务器上的Web服务.直到我们更改了我的开发机器上的settings.settings并重新编译了它运行的应用程序.除此之外,我们还注意到,如果连接到生产Web服务时出现DNS问题,而不是失败,则它会回退到我们在应用程序中创建Web服务代理时的settings.settings中指定的原始设置 - 代理生成器实际上硬编码他们.因此,当网络中断,而不是轻易诊断出连接失败时,它只是回到测试服务器,我们开始得到难以理解的数据问题.我不确定这是一个已知的问题还是已经修复过,但这肯定是你应该注意的事情.我们在应用程序中创建Web服务代理时的设置 - 代理生成器实际上对它们进行硬编码.因此,当网络中断,而不是轻易诊断出连接失败时,它只是回到测试服务器,我们开始得到难以理解的数据问题.我不确定这是一个已知的问题还是已经修复过,但这肯定是你应该注意的事情.我们在应用程序中创建Web服务代理时的设置 - 代理生成器实际上对它们进行硬编码.因此,当网络中断,而不是轻易诊断出连接失败时,它只是回到测试服务器,我们开始得到难以理解的数据问题.我不确定这是一个已知的问题还是已经修复过,但这肯定是你应该注意的事情.
因此,从那时起,我总是将服务属性设置为静态,并使用辅助方法直接从web.config读取正确的设置并以编程方式编写它们,因为这似乎可以避免问题.
看起来我遇到的问题与你的问题无关,因为我使用的是与Windows服务无关的Web服务,但是,你需要能够在运行时更改设置的任何环境而不必重新编译可能会受到此问题的影响,因此您应该知道,如果您在开发/测试/生产环境中运行,或者您确实需要在运行时重新配置应用程序(即无需重新编译)的任何环境使用settings.settings时可能会得到不可预知的结果.谨防.
小智 8
我通常使用注册表来存储我在服务中需要的信息,即端口等.
string lsbkey = @"Software\mycompany\adas";
RegistryKey adaskey = Registry.LocalMachine.OpenSubKey(lsbkey, false);
try
{
object regip = adaskey.GetValue("IP");
object regport = adaskey.GetValue("PORT");
localip = regip.ToString();
localport = int.Parse(regport.ToString());
}
catch (NullReferenceException ne)
{
localip = null;
localport = 0;
writelog(@"Aborting Service, IP or PORT doesn't exist in \local machine\software\mycompany\adas : "+ne.Message);
status = 0;
}
Run Code Online (Sandbox Code Playgroud)
我使用这些Settings.settings东西来存储我的服务的配置,但我没有遇到任何问题。通常,已更改的用户设置将存储在通常不明确的位置,如果您要手动编辑它们,则必须寻找这些位置。
| 归档时间: |
|
| 查看次数: |
14786 次 |
| 最近记录: |