【问题标题】:WCF as Service: Modifying app.config fileWCF 作为服务:修改 app.config 文件
【发布时间】:2011-05-16 18:31:50
【问题描述】:

我有一个作为 Windows 服务运行的 WCF。我将它部署到服务器上(在敲了敲键盘之后)。

最后一个问题:修改app.config(程序文件下服务目录下的programname.exe.config)时,显然需要重启。

问题是这样的——当我对配置文件进行更改并尝试重新启动服务时,它给了我“某些服务如果没有工作会自动停止,例如......”。我必须完全卸载服务,重新安装,修改配置文件,然后启动服务。

这似乎令人难以置信的乏味和不必要的。我想我应该能够简单地编辑配置文件并重新启动。是否存在我应该注意的已知冲突或设置?

谢谢! -杰森

【问题讨论】:

  • 您是否检查过事件日志中的异常情况?您是否能够附加调试器以查看重新启动时发生的情况?
  • 很遗憾,我无法附加调试器。但我下次会检查事件日志。
  • 您是在停止服务之前还是之后编辑 .config 文件?我想知道您的服务是否只是无法停止,无论配置文件是否被修改?
  • 我在停止服务之前正在编辑 .config 文件——我敢打赌这是我的问题。感谢拉力赛!

标签: .net wcf service config restart


【解决方案1】:

你可以试试这个。

  • 停止服务。
  • 在开发中修改配置文件。
  • 重新部署项目(比如使用 Build -> Publish)
  • 启动服务。

【讨论】:

  • 谢谢,但我无法发布。它是一个 Windows 服务,它有一个带有主要输出的安装项目和一个项目安装程序——当我构建它时,它会创建一个分发的 Setup.msi 和 Setup.exe 文件。不可发布:-(我希望找到一种方法来简单地编辑配置文件,一旦安装,无需重新安装过程,尤其是无需重新构建过程。
【解决方案2】:

只需从您的 msi 中引入一个自定义操作 dll 挂钩即可。

dll 中的代码(例如修改文件)将在文件复制到磁盘后但在设置完成之前执行,即在任何服务启动之前。

【讨论】:

    【解决方案3】:

    如果它是 Windows 服务,您必须安装一个新副本(在卸载前一个之后)。 在通过 IIS 发布的 WCF 服务的情况下,您可以在服务中进行更改构建项目,然后发布它。如果其他应用程序已经在使用您的 wcf 服务 (endPoint),则该应用程序无需更改,新应用程序可以使用新更改的服务,而不会影响之前的应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2012-02-19
      • 2011-02-04
      • 2012-04-02
      • 1970-01-01
      相关资源
      最近更新 更多