无法在计算机上打开<MyService>服务'.'

New*_*rth 14 c# windows-services

我有一个由C#创建的网站,用于在服务器中启动服务.

MyService用这个创建了一个名为的服务:

instsrv MyService %systemroot%\system32\srvany.exe
Run Code Online (Sandbox Code Playgroud)

然后我使用以下代码来调用它:

ServiceController service = new ServiceController("MyService");
try
{
    service.Start();
}
catch (Exception ex)
{
    Response.Write(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

但当我访问该网站并触发此事件时,它会提示我

Cannot open <MyService> service on computer '.'

是因为安全性还是许可问题?任何有明确步骤的指南都非常感谢.

New*_*rth 2

我实际上已经解决了顶层场景的问题。

  • 本例中的服务是“MyService”,需要设置登录到本地系统帐户并选中允许服务与桌面交互
  • 在 IIS 管理器中,为特定网站创建应用程序池。并将网站加载到其中。
  • 特定的应用程序池身份需要预定义到本地系统

这就是 IIS 和 services.msc 中所需要的

另一方面,MAC地址仍然会有错误。
所以,我们需要一个可以由machineKey Generator生成的。
需要将生成的machineKey粘贴到下面的标签处。

然后复制下面引用的整个块并将其粘贴到Web.config

<pages buffer="false"
enableViewState="false"
enableSessionState="false"
enableViewStateMac="false"
validateRequest="false"
enableEventValidation="false"
viewStateEncryptionMode ="Never"/>

<machineKey 
validationKey="8FCCB821044C5174C551129400F278B5629C64EAC195046DA5FE608EF418913C1139636E13FE  9F8C35AD3C10C394CAC1D9CEBB8B6BDA018165E91136B1AADBE1"
decryptionKey="3F260119F4CC0A0DD8C6B4979C70644A0ED2DD19B3ADB00F85FB7C83634FC544"
validation="SHA1"
decryption="AES"
/>
Run Code Online (Sandbox Code Playgroud)

然后问题就会得到解决,也许你们面临的情况可能有所不同,但我希望它可以帮助别人,因为我在这很长一段时间内挣扎。

此外,我使用此代码,因此在启动和停止创建的服务时不会发生冲突。

if (service.Status == ServiceControllerStatus.Stopped)
{
    try
    {
        service.Start();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
}
else
{
    try
    {
        service.Stop();
        service.Start();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

祝你好运,谢谢你们的帮助。

参考: http://www.csharp-examples.net/restart-windows-service/
http://forums.asp.net/t/906759.aspx/3/10