调试Windows服务

2024-04-29

Scenario

我有一个用 C# 编写的 Windows 服务。 我已经阅读了所有关于如何调试它的谷歌线程,但我仍然无法让它工作。 我已经运行“PathTo.NetFramework\InstallUtil.exe C:\MyService.exe”。它说安装成功,但是当我运行“Services.msc”时,该服务根本没有显示在任何地方。如果我进入任务管理器,会出现一个名为“MyService.vshost.exe”的进程。很肯定不是这样,因为它是一项服务,而不是一个流程。

有人可以向我解释一下吗?

当我运行 Services.msc 时是否应该看到该服务? (请记住,这一切都是在本地计算机上完成的,根本没有服务器。

Other

我运行的是VS2008。

EDIT:

这一切都是在我的本地计算机上完成的,我没有服务器或无法访问任何服务器。 另外,我什至不知道该服务是做什么的,我想调试它,这样我就可以浏览代码并查看它是如何工作的(服务内部的代码,而不是服务本身 - 对于你们中的任何聪明人来说,可能建议我看一下模板)。

EDIT 2:

这些都不起作用! 每次我尝试某些操作时,我都会收到一些有关必须使用 NET START 或安装该服务的消息。

EDIT 3:

我运行的是VS2008。

我输入了这个: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe C:\dev\Restarter\bin\Release\Restarter.exe

我懂了: Microsoft (R) .NET Framework 安装实用程序版本 2.0.50727.3053 版权所有 (c) Microsoft Corporation。版权所有。

运行事务安装。

开始安装的安装阶段。 查看 C:\dev\Restarter\bin\ 日志文件的内容 Release\Restarter.exe 程序集的进度。 该文件位于 C:\dev\Restarter\bin\Release\EDT.Restar 安装日志之三。 安装程序集“C:\dev\Restarter\bin\Release\Restarter.exe”。 受影响的参数有: 登录到控制台= 程序集路径 = C:\dev\Restarter\bin\Release\Restarter.exe 日志文件 = C:\dev\Restarter\bin\Release\Restarter.InstallLog

安装阶段成功完成,提交阶段即将开始。 查看 C:\dev\Restarter\bin\ 日志文件的内容 Release\Restarter.exe 程序集的进度。 该文件位于 C:\dev\Restarter\bin\Release\Restar 安装日志之三。 提交程序集“C:\dev\Restarter\bin\Release\Restarter.exe”。 受影响的参数有: 登录到控制台= 程序集路径 = C:\dev\Restarter\bin\Release\Restarter.exe 日志文件 = C:\dev\Restarter\bin\Release\Restarter.InstallLog

提交阶段成功完成。

事务安装已完成。

C:\Program Files\Microsoft Visual Studio 9.0\VC>

然后我转到 RUN -> Services.msc 我在那里什么也看不见。

任务管理器中有一个名为“Restarter.vshost.exe”的进程。

就是这样。

我只想安装和调试它。 我知道它可以工作(因为它可以运行并且不会崩溃)。 但该代码是由一位朋友编写的,我想通过在调试模式下浏览它来了解底层代码。


我推荐以下调试模式:

 var ServiceToRun = new SomeService(); 
 if (Environment.UserInteractive)
 {
    // This used to run the service as a console (development phase only)

    ServiceToRun.Start();

    Console.WriteLine("Press Enter to terminate ...");
    Console.ReadLine();

    ServiceToRun.DoStop();
 }
 else
 {
    ServiceBase.Run(ServiceToRun);
 }

Edit:确保您的目标是控制台应用程序,而不是Windows应用程序,否则它将无法工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

调试Windows服务 的相关文章

随机推荐

  • 如何使用带有 IF EXISTS 子查询的 SQL Select 语句?

    如何使用 IF EXISTS 语句 SQL Server 从子查询中选择布尔值 它应该是这样的 SELECT TABLE1 Id NewFiled IF EXISTS SELECT Id FROM TABLE2 WHERE TABLE2 I
  • 如何在rails 6 webpacker中添加jquery第三方插件

    我知道它很简单 但是随着 Rails 6 的更新 rails 6 中有新的语法用于管理由 webpacker 维护的 javascript 资源 application js require rails ujs start require
  • Excel VBA 模块在运行时未更新

    我有 2 个模块 主模块在运行时更新另一个模块 并在每次更新时运行该模块 问题是另一个模块在运行时似乎没有更新 它运行第一个模块 因为输出全部根据第一个输入 但运行完成后 我检查了其他模块 它已更新 但输出不符合更新的模块 我已经问过这个问
  • 使用插入符包通过controls = cforest_unbiased()运行cforest

    我想使用插入符包运行一个公正的 cforest 这可能吗 tc lt trainControl method cv number f index indexList savePredictions T classProbs TRUE sum
  • 如何识别 Antlr 语法中的行首?

    在我使用的语言中 某些关键字必须位于行的开头 这主要是因为语言中的字符串值可以跨越多行 并且字符串可以轻松包含这些关键字 我可以轻松处理旧的 yacc lex 语法实现 因为词法分析器使用普通的正则表达式来匹配文本模式 例如 descrip
  • 如何在javafx中通过事件传递参数?

    我有以下示例 我想将参数 文本 与事件一起传递 当单击按钮 bla 时 我该怎么做 EventHandler
  • Flutter / Dart 和 AWS SDK [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在考虑用 Flutter 使用 dart 编写一个移动应用程序 然而 我大量使用 AWS 无法使用他们的 SDK 会很麻烦 有什么好的方
  • 释放 Javascript 中未附加 DOM 节点使用的内存

    作为我的应用程序的一部分 我将一组小型 Dom 节点放在一起 这些节点不会一次全部显示 我将它们存储在内部数组中 用户可以调用它们的显示 在这种情况下 我将它们重新设置为用于显示它们的 div 这一切都很好 但是 当需要用新的替换所有它们时
  • 如何在 Spring Boot 中跳过将某些 @Entity 类创建为 h2(内存中)数据库中的表?

    我正在尝试构建一个使用 2 个数据源的 Spring Boot 应用程序 我现在的主要数据库是内存数据库 仅用于测试目的 其中的表是在我创建的 sql 文件的帮助下填充的 另一个数据库 oracledb 具有已填充的表 我想实现什么目标 我
  • 重命名 TensorFlow 中保存模型的变量范围

    是否可以在张量流中重命名给定模型的变量范围 例如 我根据教程创建了 MNIST 数字的逻辑回归模型 with tf variable scope my first scope NUM IMAGE PIXELS 784 NUM CLASS B
  • 有没有办法在 .Net 中创建“自托管”网站? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 类似于 WCF 自托管 有没有办法创建一个在控制台应用程序中 自托管 的网站或dll 提出这个问题的方
  • 将 void* 作为函数调用而不声明函数指针

    我已经搜索过 但找不到任何结果 我的术语可能有问题 所以如果以前有人问过这个问题 请原谅我 我想知道是否有一种简单的方法可以调用void 作为 C 中的函数 无需首先声明函数指针 然后为函数指针分配地址 IE 假设要调用的函数是类型void
  • Laravel:如何模拟依赖注入类方法

    我正在使用GitHub API https github com KnpLabs php github api通过一个Laravel API 包装器 https github com GrahamCampbell Laravel GitHu
  • 什么时候使用弱引用? [复制]

    这个问题在这里已经有答案了 我了解什么是 Java WeakReference 我想知道的是它通常用于解决哪种具体问题 有没有包含它们的模式 WeakReference and SoftReference当您想保留某些东西以备再次需要时使用
  • 谷歌gson LinkedTreeMap类转换为myclass

    我知道这个问题以前已经被问过 由于我对java和android的新手技能 我一个多星期都无法解决这个问题 我和我的一位朋友正在开发一个 Android 项目 其中有一些类似的事情 最奇怪的部分是 只有当我从 Google Play 商店下载
  • .git/info/exclude 中的文件不起作用

    我已经放入了两个文件 git info exclude但我仍然可以看到他们git st 它们是配置文件 我不想提交更多 我把它们放在那里是因为 assume unchanged and skip worktree我无法结帐到另一家分行 如果
  • 对包含数字和字符串的数组进行排序

    我正在尝试对包含字符串 数字和数字作为字符串 例如 1 2 的数组进行排序 我想对这个数组进行排序 以便排序后的数组首先包含数字 然后包含包含数字的字符串 最后包含字符串 var arr 9 5 2 ab 3 1 to be sorted
  • 如何在控制器外部访问RequestContext?

    背景 我正在尝试将业务逻辑从控制器移至它们自己的服务中 控制器 public class AccountController Controller private readonly IAccountService accountServic
  • nUnit Assert.That(method,Throws.Exception) 不捕获异常

    有人可以告诉我为什么这个检查异常的单元测试失败了 显然我真正的测试是检查其他代码 但我使用 Int32 Parse 来显示问题 Test public void MyTest Assert That Int32 Parse abc Thro
  • 调试Windows服务

    Scenario 我有一个用 C 编写的 Windows 服务 我已经阅读了所有关于如何调试它的谷歌线程 但我仍然无法让它工作 我已经运行 PathTo NetFramework InstallUtil exe C MyService ex