首页 > 解决方案 > SVN 进程在 Windows Server R2 上挂起

问题描述

我正在尝试自动更新我的服务器上的一些数据。Windows 服务器 2008 R2。有以下代码的 asp.net core 2.1 应用程序

        var timeoutMs = 5000;
        var process = new Process();
        process.StartInfo.FileName = exePath;
        process.StartInfo.Arguments = arguments;            
        process.StartInfo.UseShellExecute = false;
        process.StartInfo.CreateNoWindow = true;
        process.Start();
        return process.WaitForExit(timeoutMs));

这是棘手的部分。

当我使用 exePath=svn.exe arguments=update "someWorkingFolderPath" 时,进程挂起并在超时后返回 false(定期从 cmd 更新需要几毫秒)

然后存储库损坏并锁定自身(因为更新没有正确退出),当我在 cmd 上运行“svn update”时,它告诉我调用 svn cleanup。

!和!当存储库处于此锁定状态时,具有相同参数的进程不会挂起(因为相同的 svn 错误),直到我运行清理以打破工作文件夹上的锁定。然后它再次挂起。

调用 'svn log "folderPath"' 也会挂起进程。任何时候

如您所见,我没有重定向任何流,我可以从 cmd 手动成功运行所有这些命令。应用程序池从我用于 cmd 的相同本地管理员身份开始(我知道,不完美,但这不是主题)。我正在使用 TortoiseSVN 附带的 svn 命令行工具。

什么可能导致这些问题?

标签: c#svnprocesswindows-server-2008-r2

解决方案


几天后,我发现问题出在哪里以及如何解决。实际上是一个简单的错误,但它仍然让我很挣扎,所以以防万一我发布这个答案

从我的服务运行“svn auth”后,我了解到没有加载凭据缓存。IIS7“加载用户配置文件”的应用程序池中有设置,在我的情况下它设置为false。将其设置为 true(并重新启动池)后,svn 加载了我的凭据缓存并且一切正常。

我不知道为什么 svn 在半小时后没有凭据缓存的情况下不会在“svn update”上超时,如果有适当的错误消息,我会更快地解决它


推荐阅读