Разверните службу WCF в службе Windows и используйте в веб-приложении. - PullRequest
0 голосов
/ 11 марта 2011

В моем веб-приложении я хотел использовать службу wcf, размещенную в качестве службы Windows. я не знаю, как этого добиться?

Не могли бы вы предоставить мне несколько ссылок или пример, чтобы сделать это. Спасибо.

1 Ответ

0 голосов
/ 11 марта 2011

Это не очень хороший подход ИМО.Веб-приложения должны быть изолированы в браузере и не должны каким-либо образом получать доступ к системным ресурсам.Возможно, вы захотите создать веб-службу WCF-оболочки, которая будет вызываться службой Windows, и ваше веб-приложение сможет затем получить доступ к веб-службе.

Для ответа на проблему:

Исходная ссылка для кода :

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(); 
            } 

        }

Но вы можете столкнуться с проблемами безопасности, поэтому взгляните на все ответы в теме.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...