【发布时间】: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 以确保拥有最新版本。而且在大多数情况下,我们没有时间进一步调查为什么在新安装解决问题后它不起作用。