问题标签 [servicecontroller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
5293 浏览

c# - .NET ServiceController.WaitForStatus 忽略超时

我有一个 WinForm 应用程序和一个从服务器上的应用程序执行一些工作的服务。我希望用户能够从应用程序控制服务,所以我添加了一个 ServiceController 来完成所有工作(仅首先启动、停止、重新启动)。到目前为止一切正常,但是在测试不同的场景时我遇到了一个问题:我的服务在服务器上运行,应用程序在同一网络中的客户端上运行。我连接到服务并打开 ServiceController。

然后我关闭运行服务的服务器(VM)并从客户端触发停止方法。我使用带有超时的 WaitForStatus 方法,问题是:应用程序似乎忽略了超时:

在我的例子中,这些方法似乎试图停止服务大约 90 秒,然后抛出一个 InvalidOperationException,我可以处理它,但我不希望用户等待 90 秒。我想我的问题基本上是:当计时器(在这种情况下为 30 秒)用完时会发生什么?代码不应该继续运行吗?这个函数什么时候抛出 TimeoutException?MSDN说“为超时参数指定的值过期”。- 但这似乎并不意味着在值达到零之后。

有人可以启发我吗?

0 投票
1 回答
397 浏览

c# - ServiceController API 无法识别服务已停止

我正在开发一个将文件复制到 Program Files 然后运行服务的安装程序(通过复制的文件之一)。在第一次安装时,这将没有问题,但是当安装程序运行并且服务已经在机器上运行时,问题开始出现。这是因为安装程序正在尝试替换 Program Files 中已存在的文件,但其中一个文件正在被 Windows 服务使用,因此除非停止服务,否则无法替换它。

所以我决定在安装开始时使用 ServiceController API 停止服务,安装文件(覆盖现有文件),然后重新开始服务。代码很少,但这里是:

实例化服务控制器:

停止服务:

然后等待服务停止并安装文件:

最后重启服务:

使用此代码,该service.WaitForStatus()方法将永远等待(或者比我准备等待的时间更长,至少等待一个小时)。奇怪的是,我可以运行这段代码,写入service.Status()日志,手动检查服务是否已停止,查看日志发现 ServiceController 认为服务仍在运行。

起初我认为问题出在service.Stop()所以我尝试创建几个Process获取服务 PID 的对象,然后终止任务,这会立即停止服务,但仍然ServiceController无法识别服务已停止。如果我service.WaitForStatus()从代码中删除该方法,则会引发异常,因为安装程序正在尝试覆盖服务正在使用的文件。

另外,我已经尝试过使用不同的服务,但结果总是一样的,这让我相信问题不在于服务本身。

为什么ServiceController无法识别服务已停止?这个问题有解决方案或解决方法吗?我正在使用.NET 2.0,所以不幸的是,任何需要更高的东西都不是我的选择。干杯。

0 投票
2 回答
7594 浏览

c# - 无法使用 ServiceController 启动和停止服务

我有以下方法来启动和停止服务。我从另一个控制台应用程序调用此方法进行调试,因为我使用了类库 (DLL) 中的方法。

应用程序以管理权限启动。

但是当我调用Start()Stop()抛出带有以下消息的异常时:

无法在计算机“。”上打开 ASP.NET 状态服务服​​务

有人可以帮我吗?

0 投票
1 回答
1086 浏览

c# - 无法在调用线程中捕获 ServiceController.Start() 异常

如何捕获启动 Windows 服务时发生的异常。即使我在服务的 Onstart() 方法中抛出异常,我也无法在下面的代码中获取异常。

调用线程代码

我在 onstart() 方法中检查应用程序许可证,如果失败则抛出许可错误。我希望将此共享给我的调用线程,以便我可以在对话框中显示消息。如果我无法处理调用过程中的异常,有关如何执行此操作的任何想法。

0 投票
1 回答
297 浏览

c# - SQL 服务未使用 ServiceController 正确启动

我正在编写一个应用程序来自动重新启动 SQL 服务。基本上,这些是我正在做的步骤:

  1. 关闭申请
  2. 停止 SQL 服务
  3. 启动 SQL 服务
  4. 开始申请

我遇到的问题是启动应用程序。似乎应用程序在 SQL 服务之前启动,从而导致数据库连接错误。我正在以下几行检查服务的状态,但它仍然无法正常工作:

代码:

0 投票
2 回答
3070 浏览

c# - 如何使用c#将exe作为窗口服务运行

我正在尝试将 exe 文件作为窗口服务运行。我之前通过这样做手动完成了它:

它可以正常工作,当我看到我能够找到它的服务时,现在必须使用 c# 代码做同样的事情。

代码应该询问用户exe文件的路径,这个文件必须作为窗口服务运行,还有他必须提供给这个窗口服务的名称。所以这两个东西用户将在运行时输入,这很容易对我来说是任务,但是一旦我得到了那个,那么我将如何从 c# 代码运行下面的命令?

有人可以帮我吗?

编辑:请注意,用户将始终输入 serviceApplication exe 文件不是任意文件

0 投票
1 回答
1083 浏览

c# - 带有参数的 C# 服务 onCustomCommand?

我目前正在尝试实现一个运行特殊命令的服务,该命令对传递的参数执行某些操作,例如:文件路径。我正在使用cmd命令:

sc control "ServiceName" 128

但是,这个命令没有为我提供任何输入参数的方法。方法如下:

我可以输入的唯一参数是int commandfor 方法。我想输入一个folder pathfor t1.readLog();。在上面的代码中,我必须对不灵活且麻烦的路径进行硬编码。那么,有没有办法解决这个问题?

0 投票
3 回答
5841 浏览

c# - 如何在 C# mvc 中停止或启动 Windows 服务?

我试过 System.ServiceProcess.ServiceController System.Diagnostics.Process;

在我的 Web 表单中控制 Windows 服务。随着System.ServiceProcess.ServiceController我得到拒绝访问异常。

System.Diagnostics.Process一无所获。如何使用我的 Web 表单启动/停止 Windows 服务,知道吗?

0 投票
1 回答
1836 浏览

.net - 如何执行异步 ServiceController.WaitForStatus?

所以ServiceController.WaitForStatus是一个阻塞调用。怎样才能做到Task/Async的方式呢?

0 投票
1 回答
119 浏览

vb.net - 如何启用实时服务控制器报告?

应用截图:

在此处输入图像描述

申请代码:

您需要停止 SQL 服务以复制 .mdf 文件,并且从“服务”手动停止/启动服务非常烦人,因此我尝试使用 Vb.Net 编码使其更容易...