Я получаю следующую ошибку при попытке зафиксировать большие файлы (несколько гигабайт) в новой локальной установке VisualSVN 2.5.2 Server на компьютере с Windows XP.
«413 Запрос слишком большой объект»
Я использую проверку подлинности Windows, и я уже добавил следующие параметры (а затем перезапустил сервер) в httpd-custom.conf:
LimitXMLRequestBody 0
LimitRequestBody 0
Если это важно, я использую TortoiseSVN в качестве клиента.
Есть ли что-то еще, что нужно сделать, чтобы VisualSVN Server мог принимать большие файлы?
Обновить:
Содержимое программы просмотра событий SVNServer:
13.01.2012 15:31:45 Ошибка сервера VisualSVN 2.5 Apache 1001 CORP \ sam.johnson IOMFOX0960L Не удалось получить следующую бригаду корзины [500, # 0] [клиент 10.155.60.53]
13.01.2012 15:31:45 Ошибка VisualSVN Server 2.5 Apache 1001 CORP \ sam.johnson IOMFOX0960L Недопустимая длина содержимого [клиент 10.155.60.53]
«413 Запрос слишком большой объект» ошибка при фиксации - это скорее проблема клиента, чем сервера.
Клиенты Subversion используют неон библиотека для сетевого взаимодействия по умолчанию. Эта библиотека не поддерживает правильную передачу больших файлов на сервер Subversion.
В качестве обходного пути вы можете переключиться с неон к крепостной библиотека. Выполните действия на клиентской машине:
%APPDATA%\Subversion\servers
[global]
раздел[global]
раздел: http-library=serf
Вы столкнулись с ошибкой в этом фрагменте кода проверки в 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);
}
Итак, снятие ограничения по телу запроса прошло успешно. Похоже, что клиент виноват; Кажется, черепаха отправляет неверные данные в Content-Length
заголовок. Есть ли способ захватить полный HTTP-запрос (это должен быть незашифрованный http, и вам понадобится инструмент захвата, такой как wirehark), чтобы проверить, что он отправляет в этом заголовке?