代码之家  ›  专栏  ›  技术社区  ›  Corey Trager

如何从ASP.NET页中解释器并执行git命令?

  •  0
  • Corey Trager  · 技术社区  · 15 年前

    我希望我的ASP.NET页面能够解压并执行git命令。我把命令放在一个BAT文件中,它可以工作:

    REM cd to the git repo folder
    cd c:\temp\mygitrepo
    "c:\Program Files\Git\Bin\git.exe" show c090dc4b8b1b3512c1b5363c371e21d810d02f54 -- myfile.txt
    

    如果我在命令提示下运行.bat文件,没问题。 如果我使用system.diagnostics.process.start运行它,我会得到以下错误:
    请求运行时前缀,但前缀计算失败。使用静态回退

    错误来自此git文件: http://github.com/git/git/blob/master/exec_cmd.c

    我使用完全相同的技术来运行svn.exe命令,没问题。

    编辑1:来自 thread here 我了解到msysgit在与当前用户me关联的位置安装了一些文件,而不是所有用户。IIS Web服务器正在另一个用户帐户下运行。我尝试将一些引起我注意的git文件(如.gitconfig)复制到其他用户(在文档和设置中)。运气不好。所以,我把重点转移到让IIS在启动git命令时模仿我。

    1 回复  |  直到 15 年前
        1
  •  3
  •   jrista    15 年前

    它实际上是一个错误,还是只是通知您一个回退?根据链接的代码,命令似乎仍应成功执行,只使用静态前缀而不是运行时前缀。

    如果命令确实失败了,您可能需要确保在从.NET启动进程时所有必需的环境变量都可用。您可能还需要模拟不同的Windows标识才能以适当的权限运行命令(我假设ASP.NET标识受到尽可能多的限制)。ProcessStartInfo对象提供了一些配置进程的方法,包括Windows标识、进程谓词和环境变量。确保在运行批处理文件之前提供了批处理文件所需的正确上下文。

    推荐文章