【问题标题】:windows service won't start after changing target framework更改目标框架后windows服务无法启动
【发布时间】:2016-07-04 15:37:36
【问题描述】:

当目标框架是 .NET 2 时,我有一个可以正常工作的 Windows 服务,当我将其更改为 .Net 4 时,我重新编译了项目,使用 installutil 重新安装了它,然后启动了该服务,但我得到“Windows无法在本地计算机上启动服务。错误 1067:进程意外终止。” 不知道如何继续, OnStart() 方法没有被 Debugger.Break() 行击中。知道如何进行吗?如果更改目标框架,是否需要更新一些设置或配置?

【问题讨论】:

  • 从 Net 2 切换到 Net 4 时,该项目可能没有完全重新编译。编译器的依赖项并不总是能识别选项的变化。解决问题的最佳方法是删除项目中的 bin 文件夹并重新编译。编译器将重新创建 bin 文件夹。
  • @jdweng 感谢您的建议!我试过了,但仍然遇到同样的问题。这真的很奇怪,因为当我将它改回 .NET 2 并重新编译时,我根本没有遇到任何问题。嗯……
  • 查看事件日志
  • 我猜您使用的是 .Net 4.0 客户端配置文件 - 使用完整框架。
  • 你能把exe作为控制台运行吗?

标签: c# .net windows-services


【解决方案1】:

需要检查的一些事项

  1. 当您卸载2.0版本时,它是否完全卸载?检查控制面板|服务以查看它是否已被删除。中间重新启动以确保已正确卸载。
  2. 您是否使用了正确的 installutil.exe 4.0?机器和应用程序的 32 位/64 位版本是否正确?
  3. 从 2 切换到 4 时,是否正确更改了启动对象?检查项目属性并确保选择了正确的启动对象。

【讨论】:

    【解决方案2】:

    这里我会做一些事情来解决问题

    • 检查您尝试启动服务的计算机上的应用程序事件日志和错误日志
    • 如果服务在服务器上失败,最好将服务安装在本地开发人员机器上以调试问题
    • 以管理员身份启动服务控制台并确保启动服务的帐户具有有效的用户名和密码
    • 在 Visual Studio 中打开 Windows 服务
    • 检查高级编译选项以查看其 .NET Framework 4.0 以及正在使用的操作系统版本是 32 位还是 64 位
    • 清理并重建解决方案
    • 在 OnStart 方法中放置断点并调试服务。如果服务在计时器上定期运行,请根据需要调整时间间隔,以便调试。有时我们必须附加一个进程
    • 如果该服务在您的计算机上运行,​​但使用远程调试无法在该服务上运行可能有助于解决问题
    • 卸载所有先前版本的服务,并确保在某个时间点有一个活动版本的服务正在运行
    • 当您卸载、安装服务或使用 Visual Studio 以管理员身份启动它时,还要注意运行服务的用户帐户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-17
      • 2018-07-07
      • 1970-01-01
      • 2021-03-21
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      相关资源
      最近更新 更多