问题标签 [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.
c# - .NET ServiceController.WaitForStatus 忽略超时
我有一个 WinForm 应用程序和一个从服务器上的应用程序执行一些工作的服务。我希望用户能够从应用程序控制服务,所以我添加了一个 ServiceController 来完成所有工作(仅首先启动、停止、重新启动)。到目前为止一切正常,但是在测试不同的场景时我遇到了一个问题:我的服务在服务器上运行,应用程序在同一网络中的客户端上运行。我连接到服务并打开 ServiceController。
然后我关闭运行服务的服务器(VM)并从客户端触发停止方法。我使用带有超时的 WaitForStatus 方法,问题是:应用程序似乎忽略了超时:
在我的例子中,这些方法似乎试图停止服务大约 90 秒,然后抛出一个 InvalidOperationException,我可以处理它,但我不希望用户等待 90 秒。我想我的问题基本上是:当计时器(在这种情况下为 30 秒)用完时会发生什么?代码不应该继续运行吗?这个函数什么时候抛出 TimeoutException?MSDN说“为超时参数指定的值过期”。- 但这似乎并不意味着在值达到零之后。
有人可以启发我吗?
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,所以不幸的是,任何需要更高的东西都不是我的选择。干杯。
c# - 无法使用 ServiceController 启动和停止服务
我有以下方法来启动和停止服务。我从另一个控制台应用程序调用此方法进行调试,因为我使用了类库 (DLL) 中的方法。
应用程序以管理权限启动。
但是当我调用Start()
或Stop()
抛出带有以下消息的异常时:
无法在计算机“。”上打开 ASP.NET 状态服务服务
有人可以帮我吗?
c# - 无法在调用线程中捕获 ServiceController.Start() 异常
如何捕获启动 Windows 服务时发生的异常。即使我在服务的 Onstart() 方法中抛出异常,我也无法在下面的代码中获取异常。
调用线程代码
我在 onstart() 方法中检查应用程序许可证,如果失败则抛出许可错误。我希望将此共享给我的调用线程,以便我可以在对话框中显示消息。如果我无法处理调用过程中的异常,有关如何执行此操作的任何想法。
c# - SQL 服务未使用 ServiceController 正确启动
我正在编写一个应用程序来自动重新启动 SQL 服务。基本上,这些是我正在做的步骤:
- 关闭申请
- 停止 SQL 服务
- 启动 SQL 服务
- 开始申请
我遇到的问题是启动应用程序。似乎应用程序在 SQL 服务之前启动,从而导致数据库连接错误。我正在以下几行检查服务的状态,但它仍然无法正常工作:
代码:
c# - 如何使用c#将exe作为窗口服务运行
我正在尝试将 exe 文件作为窗口服务运行。我之前通过这样做手动完成了它:
它可以正常工作,当我看到我能够找到它的服务时,现在必须使用 c# 代码做同样的事情。
代码应该询问用户exe文件的路径,这个文件必须作为窗口服务运行,还有他必须提供给这个窗口服务的名称。所以这两个东西用户将在运行时输入,这很容易对我来说是任务,但是一旦我得到了那个,那么我将如何从 c# 代码运行下面的命令?
有人可以帮我吗?
编辑:请注意,用户将始终输入 serviceApplication exe 文件不是任意文件
c# - 带有参数的 C# 服务 onCustomCommand?
我目前正在尝试实现一个运行特殊命令的服务,该命令对传递的参数执行某些操作,例如:文件路径。我正在使用cmd
命令:
sc control "ServiceName" 128
但是,这个命令没有为我提供任何输入参数的方法。方法如下:
我可以输入的唯一参数是int
command
for 方法。我想输入一个folder path
for t1.readLog();
。在上面的代码中,我必须对不灵活且麻烦的路径进行硬编码。那么,有没有办法解决这个问题?
c# - 如何在 C# mvc 中停止或启动 Windows 服务?
我试过 System.ServiceProcess.ServiceController System.Diagnostics.Process;
在我的 Web 表单中控制 Windows 服务。随着System.ServiceProcess.ServiceController
我得到拒绝访问异常。
我System.Diagnostics.Process
一无所获。如何使用我的 Web 表单启动/停止 Windows 服务,知道吗?
.net - 如何执行异步 ServiceController.WaitForStatus?
所以ServiceController.WaitForStatus是一个阻塞调用。怎样才能做到Task/Async的方式呢?