2011-03-22 44 views
0

有人可以帮我在执行Iisweb.vbs将从中我想使用启动和停止在远程的IIS服务器的网站上的C#代码指令(IIS 6.0)。如何在asp.net应用程序运行Iisweb.vbs将命令

我已经尝试了其他选项,如使用带有SyytemManagement或WMI,但在所有情况下的代码工作正常本地IIS服务器,但远程服务器显示错误DirectorServises。我得到远程服务器的“访问被拒绝”错误

我已经得到了所有的服务器在同一个多米安和网络区域,并尝试用管理权限的用户帐户,但没有用于远程机器,所以试试使用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”,但无非是网站没有得到停止。

请帮我一把。

回答

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; 
     } 
相关问题