我写了一个Windows服务。我正在尝试从我的网络应用程序启动服务。
ServiceController svcContrl = new ServiceController("TestService");
svcContrl.Start();
我可以在“我的电脑”中看到该服务 - >“管理” - >“服务”。如果我从那里手动启动服务,它工作正常。但是当我尝试运行代码时,我收到异常“无法在[ComputerName]上打开TestService服务”。
我已经授权访问aspnet用户,windows登录用户服务,bin / debug文件夹在代码运行时仍会出现此异常。 我错过了造成这种异常的事情吗?
答案 0 :(得分:1)
如果找不到服务,或者服务本身存在阻止其启动的错误,则可能抛出InvalidOperationException。
鉴于您说您可以直接通过MMC应用启动服务,听起来您的代码中的服务名称可能错误。
请尝试以下操作:http://msdn.microsoft.com/en-us/library/yb9w7ytd.aspx以查看服务是否可以启动/停止等等。
此代码(http://msdn.microsoft.com/en-us/library/hyd7kz8c(v=vs.90).aspx)显示了如何获取系统上的服务列表。可能对确定实际服务名称很有用。
并且,这是一个启动/停止服务的示例应用程序:http://www.codeproject.com/Articles/31688/Using-the-ServiceController-in-C-to-stop-and-start
答案 1 :(得分:1)
我得到了解决方案。我使用的是Windows 2008 R2 IIS 6.1。它默认连接为网络服务。因此,我需要更改虚拟目录的基本设置,并将其设置为连接为我的计算机登录凭据。谢谢大家,尤其是克里斯。