当我尝试将大文件(多 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 服务器。
解决方法是,你可以从氖到农奴库。在客户端的机器上执行以下步骤:
- 打开文件
%APPDATA%\Subversion\servers
- 查找
[global]
部分 - 在该部分中添加以下选项
[global]
:http-library=serf
- 保存服务器文件并尝试再次提交