【问题标题】:How To Run And Test a Windows Services In VS如何在 VS 中运行和测试 Windows 服务
【发布时间】:2011-11-01 13:31:15
【问题描述】:

我在VS:File->New Project->C#->Windows Services中创建了一个windows服务 但我不知道如何运行和测试它。VS说我必须安装我的windows服务才能运行它。但我只想测试它,我不想安装它。有人能帮帮我吗???

【问题讨论】:

    标签: c# c#-4.0 windows-services


    【解决方案1】:

    要调试您的 Windows 服务,请在您的 Main() 中添加以下内容:

    if (!Environment.UserInteractive) {
        // We are not in debug mode, startup as service
    
        ServiceBase[] ServicesToRun;
        ServicesToRun = new ServiceBase[] { new MyServer() };
        ServiceBase.Run(ServicesToRun);
    } else {
        // We are in debug mode, startup as application
    
        MyServer service = new MyServer();
        service.StartService();
        System.Threading.Thread.Sleep(System.Threading.Timeout.Infinite);
    }
    

    你的类中的以下方法MyServer

    public void StartService() {
        this.OnStart(new string[0]);
    }
    

    现在按 F5 进行调试,就像任何 winform 或控制台应用程序一样。

    【讨论】:

      【解决方案2】:

      在创建 Windows 服务时,我通常将所有功能放入单独的类库中……为了测试,我创建了一个使用类库的“普通应用程序”……

      在测试功能并且错误消失后,我确实构建/安装了 Windows 服务...可能存在特定于 Windows 服务的问题,例如权限等 - 这些需要相应解决(一些日志记录通常很有帮助)。

      使用 VS 调试 Windows 服务与调试应用程序有点不同 - 详情请参阅 http://msdn.microsoft.com/en-us/library/7a50syb3.aspx

      【讨论】:

        【解决方案3】:

        Windows 服务并不是真正的普通可执行文件,它构建为 exe,但必须使用控制面板中的服务图标安装和启动。

        安装并启动后,您可以使用 Visual Studio Debug 菜单,附加到进程并附加到服务进行调试,这不是最简单和最快的调试方式,因为如果您需要更改您必须重新构建并重新安装它的任何内容,重新启动并附加。

        通常一个不错的方法是无论如何拆分和隔离类库中的服务逻辑(可能是服务业务逻辑),这也可以在控制台应用程序中使用。

        此时,您创建了一个测试控制台应用程序,该应用程序调用一些方法,其行为类似于 Main 方法中的服务,然后您对其进行测试和调试。

        一旦所有内容都经过测试和验证,并且您对结果感到满意,您可以复制您在 Service 类中的测试控制台应用程序的 Main 方法中放入的代码,可能是在 OnStart 方法或类似方法中,细节取决于您的具体设计。

        我们这样做也是为了调试和测试 WCF 服务,这些服务在开发期间托管在测试控制台应用程序中,在生产期间托管在 Windows 服务中。

        【讨论】:

          【解决方案4】:

          您应该使用带有以下命令的 Visual Studio 命令提示符:

          installutil“exe的路径”

          然后转到服务(开始-> 运行-> services.msc),您将找到该服务。点击开始,你就完成了。

          P.S:在 vs: 工具中调试您的服务-> 附加到进程并在列表中找到您的服务)

          【讨论】:

            【解决方案5】:

            您不能直接从 VS 调试服务。需要将调试器附加到 Windows 服务。

            要做到这一点,在 VS 中执行以下操作:

            1. 从“调试”菜单中,选择“附加到进程...”
            2. 在窗口底部附近,选择在所有会话中显示进程。
            3. 在列表中左键单击要作为 Windows 服务运行的已编译 EXE。按附加。

            结果:您可以在函数中的位置放置断点,并且您将能够调试服务执行。

            【讨论】:

              猜你喜欢
              • 2015-02-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2012-01-08
              • 2020-11-04
              • 2011-03-20
              • 1970-01-01
              相关资源
              最近更新 更多