如何在asp.net应用程序中运行IISWeb.vbs命令

时间:2011-03-22 13:08:14

标签: asp.net

有人可以帮我从c#代码执行IISWeb.vbs命令,我试图用它来启动和停止远程IIS服务器(IIS 6.0)上的网站。

我尝试了其他选项,例如将DirectorServises与SyytemManagement或WMI一起使用,但在所有情况下代码都可以正常运行本地IIS服务器,但会显示远程服务器的错误。我收到远程服务器的“拒绝访问”错误

我已经拥有了同一个domian和网络区域中的所有服务器,并尝试使用具有管理权限的用户帐户,但没有任何东西适用于远程计算机,因此尝试使用IISWeb.vbs。

请注意,从我的开发机器上,当我从命令提示符运行时,我能够使用此IISWeb.vbs命令在远程计算机上停止和启动网站。所以绝对没有权限问题。 我正在使用的代码:

        Process p = new Process();
        p.StartInfo.FileName = "cscript.exe";
        p.StartInfo.Arguments = "iisweb.vbs /stop w3svc/87257621 test /s servername /u userid /p password";
        p.StartInfo.UseShellExecute = false;
        p.Start();
        p.WaitForExit();
        int i= p.ExitCode;

令人惊讶的是,我没有收到任何错误,我得到返回代码'0',但网站没有停止。

请帮帮我。

1 个答案:

答案 0 :(得分:0)

想出问题,代码试图找出c:\program files\Visual Studio\内的iisweb.vbs文件.........并且无法找到它。所以我修改了代码,专门在C:\Windows\System32位置查找iisweb.vbs文件,现在工作正常。

以下是在具有IIS 6.0的远程计算机上停止和启动网站的代码的工作版本。

       ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
       psi.FileName = @"C:\WINDOWS\system32\cscript.exe";
       psi.Arguments = @"C:\WINDOWS\system32\iisweb.vbs /stop w3svc/1 test /s ServerName /u UserId /p Password";
       psi.RedirectStandardOutput = true;
       psi.WindowStyle = ProcessWindowStyle.Hidden;
       psi.UseShellExecute = false; 
       System.Diagnostics.Process listFiles; 
       listFiles = System.Diagnostics.Process.Start(psi);
       System.IO.StreamReader myOutput = listFiles.StandardOutput; 
       listFiles.WaitForExit(2000); 
       if (listFiles.HasExited) 
       {
           string output = myOutput.ReadToEnd();
           //this.processResults.Text = output;
       }