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.)
你能告诉我问题出在哪里?
这听起来像一个可怕的黑客,你确定运行批处理文件是唯一的方法来做你需要达到什么? – DavidG 2014-10-30 11:29:45
@DavidG: 感谢您的快速响应。 问题是,我们有一个GIT存储库,并且想要执行一个自创的自动部署。 我们在另一台服务器上向我们的GIT-repo提交了一些东西。 Git-Repo使用GET-Parameter向我创建的ASP.NET网站发送一个简单的webhook。 此站点现在应运行批处理文件,该文件会删除服务器上本地的旧回购站,下载新的回购站并将其部署到IIS。 – Marius 2014-10-30 11:32:07
所以你想让你的网站部署你的网站?听起来有点像我的启示! :) – DavidG 2014-10-30 11:33:05