在Windows服务中部署WCF服务并在Web应用程序中使用

时间:2011-03-11 07:12:21

标签: wcf

在我的Web应用程序中,我想使用托管为Windows服务的wcf服务。 我不知道如何实现这个目标?

你可以请我提供一些链接或示例来做到这一点。 感谢。

1 个答案:

答案 0 :(得分:0)

这不是IMO的好方法。 Web应用程序应在浏览器中进行沙盒处理,不应以任何方式访问系统资源。您可能希望创建一个由Windows服务调用的包装WCF Web服务,然后您的Web应用程序可以访问Web服务。

为了回答这个问题:

Original Link for Code

private void Page_Load(object sender, System.EventArgs e)
        {
string PcName = "PC Name"; 
            WindowsImpersonationContext wic = null; 

            try 
            { 

                IPrincipal p = this.User; 

                WindowsIdentity id = (WindowsIdentity)p.Identity; 

                Response.Write("Running as:" +  WindowsIdentity.GetCurrent().Name + "<br>"); 

                wic = id.Impersonate(); 

                Response.Write("Running as:" +  WindowsIdentity.GetCurrent().Name + "<br>"); 

                ServiceController[] services = ServiceController.GetServices(); 

                for(int i = 0; i <  services.Length; i++) 
                { 

                    if (services[i].DisplayName == "COM+ System Application") 
                    { 
                        Response.Write(services[i].DisplayName + " - "); 
                        Response.Write(services[i].Status.ToString()); 
                        Response.Write("<br>"); 
                        ServiceController sc = new ServiceController(services[i].DisplayName,PcName); 

                        if (sc.Status == ServiceControllerStatus.Running) 
                        { 
                            sc.Stop(); 
                        } 
                        if (sc.Status == ServiceControllerStatus.Stopped) 
                        { 
                            sc.Start(); 
                        } 

                    } 
                } 
            }   
            catch(Exception err ) 
            { 
                Response.Write(err.Message); 
            }         
            finally 
            { 
                wic.Undo(); 
            } 

        }

但是你可能遇到安全问题,所以看一下线程中的所有响应。