【问题标题】:Windows Service Config not updatingWindows 服务配置未更新
【发布时间】:2014-07-15 09:32:13
【问题描述】:

我有一个用 c# 编码的 Windows 服务,带有一个配置文件:

ProcessingService.exe
ProcessingService.exe.config

它有一个网络服务端点地址。这最初输入了错误的地址,所以我停止了服务,更改了配置文件并重新启动,但服务仍在访问原始 URL。

然后我重新启动了整个服务器,但仍然访问了错误的 URL。

我们有大量关于新安装版本的公司规则,这意味着我编译和安装新服务的周转时间将以几周为单位来衡量,而整个过程中 URL 都会中断。有没有办法强制更新配置?

(是的,我已经三次检查配置文件现在是否正确!)

为了响应对服务设置代码的请求,我只是做了(更改了类名):

WebserviceNamespace.ServiceClass client = new WebserviceNamespace.ServiceClass();

服务配置显示原始 URL,我正在使用转换后的 app.config 进程来覆盖新配置文件中的新 URL(我再次检查了三次)。我将服务类生成为内部的,这可能与它有关吗?

好的,所以我现在尝试在另一台计算机上安装该服务,停止它,将配置中的 URL 更改为“nevergonnahappen”并重新启动。现在,对无效 URL 的请求会失败。所以它一定和我们的实时服务器有关......

【问题讨论】:

  • 您需要卸载并重新安装您的服务。
  • @User.Anonymous 不,你没有。创建服务只是将可执行文件映射到服务名称,它不会神奇地缓存其 .NET 配置。 - Chris,显示您实例化服务客户端的代码。
  • 你确定吗?我看过的所有其他文章都说重启就足够了,因此我很困惑。这里有什么区别? stackoverflow.com/questions/6039365/…
  • 感谢 CodeCaster,cmets 以上修改
  • 我在我的应用程序上使用了许多 Windows 服务,我同意理论上重启就足够了(在我的开发计算机上,工作正常)。但是当我在另一个环境中工作时,我已经看到太多次配置没有更新,我现在使用带有 installutil /u 和 installutil 的 .bat 以确保拥有最新版本。而且在大多数情况下,我们没有时间进一步调查为什么在新安装解决问题后它不起作用。

标签: c# service config


【解决方案1】:
  1. 确保您的服务正在从配置文件中提取 url。
  2. 确保服务在获取 url 后没有将其缓存在其他地方(可能在内存或文件或数据库中)。
  3. 确保您为配置文件指向了正确的文件夹,或许可以使用 agent ransack 进行疯狂搜索,任何其他仍在写入损坏 url 并且您的服务实际上指向它的地方。

【讨论】:

  • 调试提示可以发布为 cmets,而不是答案。
  • 所有这些都已检查是的,请参阅上面的编辑
  • 但只有声望50的用户才能回复别人的评论,我要多一点。 @ChrisSurfleet,我想到的另一个点击,也许你可以删除配置内容,看看你的服务是否仍然能够启动或抛出错误。
  • 是的,我试了一下——我完全删除了条目,没有任何变化。奇怪的是,即使在服务器完全重新启动后,这种情况仍然存在,但在所有其他服务器上,重新启动服务就足够了。服务器也应该是克隆的!
  • 几年前发生在我身上一次,但那个时候我试图修改app.config而不是myservice.exe.config,看起来和你的情况不一样。由于您在其他服务器上尝试时仍然获得安装程序并且它可以工作,为什么不尝试最后一步,卸载并重新安装,在启动服务之前,更新配置文件 1st。在执行此操作时,请提出更改请求以重新编译构建,以防上述步骤失败,以免拖累您的时间线。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多