我有一个小实用程序应用程序为不同的场景运行一些Subversion命令(基本上只是为了做一些标准的活动,我做的更容易)。
在该应用程序中,我使用System.Diagnostics.Process来运行一组svn命令(有问题的是一个更新命令)。虽然我运行了这个,但是我回到了一个svn E175013无法连接到URL'[url]'的存储库并且禁止访问'[repository]'。 (我在过程中得到了这个。退出了多个错误消息)看起来很直接,但是当我从命令行运行相同的命令时它会成功而没有错误并运行更新。
正在运行的命令是:
svn update "[directory]" --non-interactive --trust-server-cert --username [username] --password [password] --config-dir [subversionDirectory]
创建相同进程(ProcessStartInfo)的代码是:
process.StartInfo = new ProcessStartInfo
{
CreateNoWindow = true,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
FileName = executableLocation,
WindowStyle = ProcessWindowStyle.Hidden,
Arguments = commandParameters
};
代码端位于Web服务中,该服务使用模拟命令中[username]中的同一用户;在cmd方面,我已经完成了一个runas,可以作为命令中[username]中的同一个用户运行。
还应该注意,当命令是“status”而不是“update”时,它似乎同时适用于两者,但是更新在CMD中工作但在代码端失败。
什么会使一个进程成功而另一个进程失败(这是一致的,从cmd它始终有效,从代码中的进程总是失败)?关于解决这个问题接下来要看什么,我有点不知所措。