小弟自己写了一个webservice服务,然后想通过 网页去启动这个服务在vs上调试 可以启动成功 但是发布到 iis上却启动失败 报错是System.ComponentModel.Win32Exception: Access is denied代码 如下  ServiceController service = new ServiceController("DataCompareService");
            string state = service.Status.ToString();
            ServiceControllerPermission scp = new ServiceControllerPermission(ServiceControllerPermissionAccess.Control, service.MachineName, "DataCompareService");
            scp.Demand();
            string IsSucess = "ok";
           //先判断服务的状态
            if (service.Status.ToString() == "Stopped" || service.Status.ToString() == "StopPending")
            {
                
                try
                {
                    service.Start();
                    //如果服务30秒后还没有启动成功,报告失败
                    service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 30));
                }
                catch
                {
                    IsSucess = "no";
                }
            }
            else
            {
                try
                {
                //这里先停止服务
                    service.Stop();
                //再次启动服务
                    service.Start();
                    //如果服务30秒后还没有启动成功,报告失败
                    service.WaitForStatus(ServiceControllerStatus.Running, new TimeSpan(0, 0, 30));
                }
                catch
                {
                    IsSucess = "no";
                }
            }代码没有 错误 ,是iis权限的问题 请问如何修正权限 谢谢

解决方案 »

  1.   

    哦!是IIS6的话就要设置IUSER和IISUSER这两个的权限,试试
      

  2.   

    在 IIS 上启 windows service,这是闹哪样啊。
      

  3.   

    我知道 是权限的问题 但是 我加上IUSER和IISUSER这两个的权限 还是不可以啊 。还有 三楼的 兄弟 我是.net 开发的web项目 然后发布到IIS 中的 ,然后通过页面上的按钮 启动自己写的一个web服务, 我用vs 调试的时候 成功啦 但是发布到iis上 失败
      

  4.   

    你的web服务的宿主是windows service呀。直接把webservice application部署到iis上就可以了呀。
      

  5.   

    首先 谢谢楼上大哥的 解答 ,但是我现在遇到的问题 是我把 自己写的webservice服务 已经注册到本机服务中 ,现在就想做个 web 页面 上面一个按钮 点击一下 重启服务 ,即实现 重启 服务中指定服务, 在vs中 已经成功 但是在iis上却无论如何也不能成功 ,老是报错 System.ComponentModel.Win32Exception: Access is denied
      

  6.   

    那就不知道了。ServiceController 要求的权限更大。用Process.Start 通过net命令启动呢?
      

  7.   

    这个方法 我试过 先用文件流 写出一个net start 服务 到.bat 中 然后通过Process.Start  去开启找个bat 结果还是在vs中可以运行 ,在iis 上还是无法运行