2014-10-30 440 views
0

我想在我發佈這些文件的IIS服務器上通過CMD執行一個.bat文件。我將批處理文件放在解決方案的App_Data目錄中,並將其設置爲「始終複製」,即從部署中將其放在IIS上。通過CMD執行.bat文件,asp.NET MVC 4

我也有一個網站(.cshtml),如果我打電話給這個網站,它應該繼續與批處理文件的cmd。我做到了這一點與此代碼:

string filePath = HttpContext.Current.Server.MapPath("~/App_data/Auto_Deploy_" + branch + ".bat"); 
     ProcessStartInfo procStartInfo = new ProcessStartInfo("cmd.exe", "/c " + filePath); 
     procStartInfo.WorkingDirectory = "C:\\"; 
     procStartInfo.RedirectStandardOutput = true; 
     procStartInfo.UseShellExecute = false; 
     procStartInfo.CreateNoWindow = false; 
     procStartInfo.RedirectStandardError = true; 
if (Environment.OSVersion.Version.Major >= 6) 
     { 
      procStartInfo.Verb = "runas"; 
     } 

     procStartInfo.FileName = "cmd.exe"; 

我開始行動:

Process proc = new Process(); 
     proc.StartInfo = processStartInfo; 
     proc.Start(); 
     proc.WaitForExit(); 

我也產生了app.manifest和編輯的行

<requestedExecutionLevel> 

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

因爲我認爲,那它d以管理員權限完成。

如果我從本地主機(在服務器上)連接到網站,我直接進入網頁並運行此腳本,並將輸出和錯誤發佈到屏幕上。

我總是得到同樣的錯誤:

Das System kann den angegebenen Pfad nicht finden.

(The system could not find path.)

你能告訴我問題出在哪裏?

+2

這聽起來像一個可怕的黑客,你確定運行批處理文件是唯一的方法來做你需要達到什麼? – DavidG 2014-10-30 11:29:45

+0

@DavidG: 感謝您的快速響應。 問題是,我們有一個GIT存儲庫,並且想要執行一個自創的自動部署。 我們在另一臺服務器上向我們的GIT-repo提交了一些東西。 Git-Repo使用GET-Parameter向我創建的ASP.NET網站發送一個簡單的webhook。 此站點現在應運行批處理文件,該文件會刪除服務器上本地的舊回購站,下載新的回購站並將其部署到IIS。 – Marius 2014-10-30 11:32:07

+1

所以你想讓你的網站部署你的網站?聽起來有點像我的啓示! :) – DavidG 2014-10-30 11:33:05

回答

0

感謝您的幫助,我現在寫了一個小窗口服務,誰在做這項工作。