0

我在查找在我的本地机器上运行的服务时遇到了一些问题,但只有当我使用参数字符串而不是硬编码字符串(我添加它来调试问题)时。

我的方法如下所示:

public bool CheckIfServiceIsRunning(string serviceName)
{
    try
    {
        var services = ServiceController.GetServices();
        var service = services.FirstOrDefault(s => s.DisplayName == serviceName);
        var test = services.FirstOrDefault(s => s.DisplayName == "MongoDB");
        if (service == null)
        {
            return false;
        }
        return service.Status.Equals(ServiceControllerStatus.Running);
    }
    catch (InvalidOperationException ex)
    {
        Log.Info(ex.Message);
        throw new InvalidOperationException(ex.Message);
    }
}

使用参数“MongoDB”运行此代码的结果:

服务=空

test = System.ServiceProcess.ServiceController 对象与 MongoDB 服务

编辑: 使用以下比较告诉我字符串不相等:

if (string.Compare(serviceName, "MongoDB", StringComparison.Ordinal) == 0)
{
    Console.WriteLine("same string");
}
4

1 回答 1

2

方法本身看起来不错,你解析的参数有问题,好好看看你实际上在方法中放入了什么。尝试使用serviceName.Trim(),字符串在之前和/或之后的空白字符可能会变得棘手。

您还可以在方法内设置断点并检查其中serviceName包含的确切内容。

于 2017-09-28T09:08:21.750 回答