C# 无法打开<;MyService>;计算机上的服务&x27';

C# 无法打开<;MyService>;计算机上的服务&x27';,c#,windows-services,C#,Windows Services,我有一个由C#创建的网站,用于在服务器中启动服务 我使用以下命令创建了一个名为MyService的服务: instsrv MyService %systemroot%\system32\srvany.exe 然后我使用以下代码来调用它: ServiceController service = new ServiceController("MyService"); try { service.Start(); } catch (Exception ex) { Response.W

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

我使用以下命令创建了一个名为
MyService
的服务:

instsrv MyService %systemroot%\system32\srvany.exe
然后我使用以下代码来调用它:

ServiceController service = new ServiceController("MyService");
try
{
    service.Start();
}
catch (Exception ex)
{
    Response.Write(ex.Message);
}
但当我访问该网站并触发此事件时,它会提示我

无法在计算机“”上打开服务。

是因为安全问题还是权限问题??非常感谢有清晰步骤的指南。

对于iis(版本6及更高版本),web应用程序使用应用程序池运行。每个应用程序池都可以使用特定的用户(标识)运行,默认情况下,该用户是网络服务。将此用户添加到本地管理员是一个非常糟糕的主意

可能的方式:

  • 授予此用户启动/停止服务所需的权限,设置专用应用程序池以使用此标识,并确保该帐户具有对asp/.net应用程序路径的读取权限
  • 也创建一个专用帐户。在应用程序中,使用安全存储在配置中的用户名/密码连接到服务管理(加密部分)。我不确定是否可以使用服务控制指定用户/密码,但至少可以使用WMI或Process.Start,使用net stop/net Start命令

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

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

另一方面,MAC地址仍然会有错误。
所以,我们需要一个可以由
需要将生成的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"
/>
祝你们好运,谢谢你们的帮助

参考:

嗨,我也遇到过同样的问题,我一直在给所有我认为包括清洁工在内的群体授予权限,但这并没有起到任何作用。最后,我在我的web配置中尝试了这一行

<identity impersonate="true" userName="Domainname\admin" password="123" />

它可能会帮助有相关问题的人:

在我的服务器上,powershell commandlet失败,并显示相同的错误消息。
这是因为,即使我以本地管理员身份登录,我也需要以管理员身份运行PowerShell环境(右键单击,以管理员身份运行)。

您的web应用程序在哪个身份下工作?默认情况下,它是网络服务。。。它没有启动/停止的权限service@steve:对不起,我有点怀疑,你什么意思?什么身份??如果是web服务。有没有其他办法解决这个问题??我尝试将网络服务添加为管理员组。我尝试使用服务>属性>登录>作为网络服务登录。这似乎也解决不了问题。一个非常好的主意?好还是坏?
<identity impersonate="true" userName="Domainname\admin" password="123" />