2009-03-12 2 views
1

Итак, я новичок в VB.NET и пытаюсь написать программу, которая запрашивает у пользователя имя сервера, а затем перезапускает IIS на этом компьютере.Как перезапустить службу с помощью VB.NET?

Проблема 1) пространство имен System.ServiceProcess не распознается.
Проблема 2) нужна помощь с кодом, передавая имя сервера в под.

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 

ответ

2

Вы должны добавить ссылку на System.ServiceProcess сборку щелкнув правой кнопкой мыши проект и нажав Add Reference ... и получить аргументы командной строки, передаваемые методу Main так:

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

Это вопрос, похоже, является упражнением, поэтому не публиковать полностью рабочий код было бы более полезным, ИМХО. – Tomalak

+0

Mehrdad, когда я попытался запустить это, vs говорит мне, что я не могу вызвать run в рамках общего метода. «не может ссылаться на член экземпляра класса из совместно используемого метода или инициатора разделяемого члена без явного экземпляра класса« –

+0

@Tomalak: это скорее похоже на вопрос типа администратора сценария, чем домашнее задание. Я не думаю, что домашние задания касаются услуг и такого рода вещей. –

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

Небольшое объяснение, почему этот фрагмент кода отвечает на вопрос, будет полезен не только для человека, задающего вопрос, но и для людей, которые находят этот вопрос позже –

Смежные вопросы