2014-10-30 106 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

感谢您的帮助,我现在写了一个小窗口服务,谁在做这项工作。