【问题标题】:SVN processes hang on Windows Server R2SVN 进程在 Windows Server R2 上挂起
【发布时间】:2019-12-06 10:34:58
【问题描述】:

我正在尝试自动更新我服务器上的一些数据。 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 命令行工具。

什么可能导致这些问题?

【问题讨论】:

  • 我在我的机器上尝试您的代码没有任何问题(.NET Core 控制台应用程序)。该文件夹上没有其他写入进程(防病毒,其他实例)? Sysinternals procmon 可以帮助识别其他阻塞进程。

标签: c# svn process windows-server-2008-r2


【解决方案1】:

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

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

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

【讨论】:

  • 这个答案花了我 6 天时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 2021-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多