C# 导出svn文件的进程与Process.Start()挂起
我尝试执行一个.cmd来从SVN导出文件,它在我的本地机器(WS2003 SP2 IIS Identiy:local System)中手动工作,但在执行服务器(相同的配置)中失败 我执行的脚本是:C# 导出svn文件的进程与Process.Start()挂起,c#,.net,svn,iis,process,C#,.net,Svn,Iis,Process,我尝试执行一个.cmd来从SVN导出文件,它在我的本地机器(WS2003 SP2 IIS Identiy:local System)中手动工作,但在执行服务器(相同的配置)中失败 我执行的脚本是: echo.%Date%-%Time%- Username %username%>>c:\vpcheckcode\logsvn.txt svn export %svnUrl% %srcFolder% --force --username %usr% --password %psw% 如果
echo.%Date%-%Time%- Username %username%>>c:\vpcheckcode\logsvn.txt
svn export %svnUrl% %srcFolder% --force --username %usr% --password %psw%
如果我只是尝试复制一个文件,没有svn,它就可以工作
当我手动执行它时,它会记录我的用户并导出文件。
在开发PC上,它不记录用户,但可以工作;在执行服务器上,它不记录用户,也不能工作
我尝试以以下方式执行.cmd:
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
startInfo.FileName = strFileName;
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = svnUrl + " " + srcFolder+ " " + usr+" "+psw;
using (Process exeProcess = Process.Start(startInfo))
{
pid = exeProcess.Id;
EventLog.WriteEntry("VPCheckCodeSrvDll.ExecuteScriptSVN", "avviato pid svn: " + pid.ToString(), EventLogEntryType.Warning);
if (!exeProcess.WaitForExit((int)_svnExportTimeout))
{
exeProcess.Kill();
进程将一直挂起,直到被终止
C:\Documents and Settings\myuser>tlist 4980
4980 cmd.exe
CWD: c:\windows\system32\inetsrv\
CmdLine: cmd /c ""C:\ANALISI\000000-xx-v90\SVN\svnExport.cmd" https://svn.mysite.local/repos/HA/branches/H
VirtualSize: 11332 KB PeakVirtualSize: 15492 KB
WorkingSetSize: 1832 KB PeakWorkingSetSize: 1848 KB
NumberOfThreads: 1
2704 Win32StartAddr:0x4ad07670 LastErr:0x000000cb State:Waiting
5.2.3790.3959 shp 0x4AD00000 cmd.exe
5.2.3790.4937 shp 0x7C800000 ntdll.dll
5.2.3790.5069 shp 0x77E40000 kernel32.dll
7.0.3790.3959 shp 0x77BA0000 msvcrt.dll
5.2.3790.4455 shp 0x7D1E0000 ADVAPI32.dll
5.2.3790.4759 shp 0x77C50000 RPCRT4.dll
5.2.3790.4455 shp 0x76F50000 Secur32.dll
5.2.3790.4033 shp 0x77380000 USER32.dll
5.2.3790.4396 shp 0x77C00000 GDI32.dll
5.2.3790.3959 shp 0x71BD0000 MPR.dll
5.2.3790.3959 shp 0x76290000 IMM32.DLL
有什么建议吗?我也做了类似的事情。请尝试以下操作: 更改:startInfo.Arguments=svnUrl+“”+srcFolder+“”+usr+“”+psw to:startInfo.Arguments=String.Format(“{0}\”{1}\”--username{2}--password{3}”、svnUrl、srcFolder、usr、psw)
我假设您的usr和psw变量不包含subversion的参数信息。另外,我的目的地包括文件名(我看不到完整的命令行,因为它被截断了),还包含空格,所以我不得不用引号将其括起来。如果有空格,您的svnUrl应该有“%20”来代替空格(同样,完整的URL不可见)。抱歉,响应太快。我忘了建议尝试在没有脚本的情况下让流程正常工作。因此,替换startInfo.FileName=strFileName;使用startInfo.FileName=“svn”,我还忽略了在startInfo.Arguments(String.Format(“export{0}\”{1}\“--username{2}--password{3}”、svnUrl、srcFolder、usr、psw)的开头添加关键字“export”);谢谢你,罗德,我试过了,但没有成功。如果我直接执行脚本,它就可以工作,但从Process.Start()开始它就不能工作。我想这一定与用户授权有关。