2009-03-12 30 views
1

Tamam, bu yüzden VB.NET'te yeniyim ve kullanıcıyı bir sunucu adı isteyen ve bu makinede IIS'yi yeniden başlatan bir program yazmaya çalışıyorum.VB.NET ile bir hizmet nasıl yeniden başlatılır?

Sorun 1) ad alanı System.ServiceProcess tanınmadı.
Sorun 2) servername'i alt sayfaya geçirerek kodla ilgili yardıma ihtiyacınız var.

Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main() 
     Run() 
    End Sub 

    Public Sub Run() 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC") 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 
Projeyi tıklayıp Add Reference sağ tıklayarak System.ServiceProcess derlemesine ekleyin ... ve bunun gibi Main yönteme geçirilen komut satırı argümanları almalısınız

cevap

2

:

Imports System 
Imports System.ServiceProcess 
Imports System.IO 
Imports System.Threading 

Class RestartIIS 
    Shared Sub Main(ByVal commandLineArgs() as String) 
     Run(commandLineArgs(0)) 
    End Sub 

    Public Sub Run(ByVal machineName as String) 
     Console.WriteLine("Please enter the Server Name: ") 
     Dim ServerName As String = Console.ReadLine() 

     Dim sc As ServiceController = New ServiceController("W3SVC", machineName) 

     sc.Stop() 
     Thread.Sleep(2000) 
     sc.Start() 

     Console.Write("Press Enter to Exit") 
     Console.ReadLine() 
    End Sub 
End Class 
+0

Bu Soru bir egzersiz gibi görünüyor, bu yüzden tam çalışma kodunun yayınlanması daha yararlı olurdu, IMHO. – Tomalak

+0

Mehrdad, bunu çalıştırmayı denediğimde, vs bana paylaşılan bir yöntemle koşmayı başaramadığımı söylüyor. "sınıfın bir örnek üyesine paylaşılan bir yöntem veya paylaşılan üye başlatıcısı içinden" –

+0

@ Tomalak sınıfının açık bir örneği olmaksızın başvuruda bulunamaz: öyleyse, ödevden daha çok bir komut dosyası yöneticisi türü sorusu gibiydi. Ev ödevlerinin servislerle ve bu tür şeyler ile uğraştığını sanmıyorum. –

0
ServiceControl.Stop() 
Do 
    ServiceControl.Refresh() 
    If ServiceControl.Status = ServiceControllerStatus.Stopped Then 
     ServiceControl.Start() 
     Exit Do 
    End If 
Loop 
+1

Kodun bu kod parçasının soruyu nasıl yanıtlamasının küçük bir açıklaması, yalnızca soruyu soran kişi için değil, bu soruyu daha sonra bulmakta olan kişiler için de yararlı olabilir. –

İlgili konular