【问题标题】:Windows Service application in c#c# 中的 Windows 服务应用程序
【发布时间】:2013-05-09 05:48:20
【问题描述】:

我创建了一个Windows Service application using c#。我已按照this msdn 文档中的步骤操作,但该服务未在Computer -> Manage -> Service pane 的服务部分中列出。

我错过了什么吗?它的Windows 7

想要运行我的服务来检查功能。

谢谢

【问题讨论】:

    标签: c# .net windows service


    【解决方案1】:

    您必须安装该服务。这可以通过 .net 框架文件夹中的 installutil 轻松完成,如下所示:

    installutil yourproject.exe
    

    如果您想调试该服务,只需通过“调试”-“附加到进程”从 Visual Studio 附加它。有关更多详细信息,请参阅: http://msdn.microsoft.com/en-us/library/sd8zc8ha.aspx

    【讨论】:

    • 试过但没有成功,服务部分仍然没有列出服务。
    • @JibranKhan:您的服务可能没有将服务(卸载)安装程序实现为System.Configuration.Install.Installer。有关更多信息,请参阅my related answer 或其中链接的Code Project article;或者只是使用sc create,正如我在对这个问题的回答中所描述的那样。
    【解决方案2】:

    您需要安装您的服务,以便 Windows 服务控制管理器 (SCM) 了解它(通过生成的注册表项)。

    您有(至少)两种选择:

    sc create "SERVICENAME" binpath = "C:\whatever\Service.exe"
    
    installutil "C:\whatever\Service.exe"
    

    对于sc create,任何命令提示符都可以。对于installutil,Visual Studio 命令提示符是运行它的最简单方法——因为VS 命令提示符的PATH 环境变量使使用.NET 命令行工具变得容易;并且根据我的经验,您的服务需要实施服务(卸载)安装程序。

    在您安装并实际检查您的服务后,您几乎肯定会在某个时候将其卸载 - 例如然后在非开发位置安装它的最终版本,或者只是清理乱扔已安装服务列表的开发服务条目。您在 sc deleteinstallutil /u 中有相应的选项 - 与我在上面解释的有关安装选项的相同注意事项。

    我已经写信 more 介绍了卸载和安装 Windows 服务的一些细节,您可能会觉得这些细节很有趣和/或有帮助 - 特别是如果您决定采用该方法,则实施服务(卸载)安装程序。

    【讨论】:

    • 太棒了!这样做了,现在在服务窗格中列出。当我启动服务时,它说服务已启动但由于没有被任何其他程序或服务使用而停止?我如何测试服务是否正常工作?
    • @JibranKhan:很高兴听到这个消息。如果愿意,请将我的回答标记为已接受。我将跟进评论,为您指明正确的方向,以便立即测试您的服务。
    • @JibranKhan:如果您的服务写入数据库或文件,最简单的测试方法是在数据库或文件中查找输出。服务通常没有本质上倾向于它们的 UI;但是您也可以将您的服务配置为与 Windows 桌面交互,如果它作为本地系统运行(管理工具 > 服务,然后是服务属性中的登录选项卡),以便您可以显示消息框(即MessageBox.Show)。检查。更简洁一点,您还可以将信息事件写入 Windows 事件日志或调试输出,您可以使用 Sysinternals DebugView(免费)获取。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    相关资源
    最近更新 更多