VisualSVN Server 2.5.2 在尝试提交多 GB 文件时报告“413 请求实体太大”

VisualSVN Server 2.5.2 在尝试提交多 GB 文件时报告“413 请求实体太大”

当我尝试将大文件(多 GB)提交到 Windows XP 计算机上新本地安装的 VisualSVN 2.5.2 Server 时出现以下错误。

“413请求实体太大”

我正在使用 Windows 身份验证,并且已经将以下设置添加到 httpd-custom.conf(然后重新启动了服务器):

LimitXMLRequestBody 0
LimitRequestBody 0

如果重要的话,我正在使用 TortoiseSVN 作为客户端。

还需要做些什么才能让 VisualSVN Server 接受大文件吗?

更新

SVNServer事件查看器的内容:

2012 年 1 月 13 日下午 3:31:45 VisualSVN 服务器 2.5 错误 Apache 1001 CORP\sam.johnson IOMFOX0960L 无法获取下一个存储桶队列 [500,#0] [客户端 10.155.60.53]
2012 年 1 月 13 日下午 3:31:45 VisualSVN 服务器 2.5 错误 Apache 1001 CORP\sam.johnson IOMFOX0960L 内容长度无效 [客户端 10.155.60.53]

答案1

您在验证代码的这一块遇到了错误,如下http_filters.c

/* Protects against over/underflow, non-digit chars in the
 * string (excluding leading space) (the endstr checks)
 * and a negative number. */
if (apr_strtoff(&ctx->remaining, lenp, &endstr, 10)
    || endstr == lenp || *endstr || ctx->remaining < 0) {

    ctx->remaining = 0;
    ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, f->r,
      "Invalid Content-Length");

    return bail_out_on_error(ctx, f, HTTP_REQUEST_ENTITY_TOO_LARGE);
}

因此,您成功删除了请求主体限制。看起来客户端有问题;Tortoise 似乎在Content-Length标头中发送了无效数据。您有没有什么方法可以捕获完整的 HTTP 请求(它需要是未加密的 http,并且您需要像 wireshark 这样的捕获工具)来检查它在该标头中发送的内容?

答案2

“413请求实体太大”提交时的错误是客户端的问题而不是服务器的问题。

Subversion 客户端使用默认为网络通信库。此库不支持正确传输大文件到 Subversion 服务器。

解决方法是,你可以从农奴库。在客户端的机器上执行以下步骤:

  1. 打开文件%APPDATA%\Subversion\servers
  2. 查找[global]部分
  3. 在该部分中添加以下选项[global]http-library=serf
  4. 保存服务器文件并尝试再次提交

相关内容