Назад | Перейти на главную страницу

VisualSVN Server 2.5.2 сообщает «413 Request Entity Too Large» при попытке зафиксировать файлы размером несколько гигабайт.

Я получаю следующую ошибку при попытке зафиксировать большие файлы (несколько гигабайт) в новой локальной установке 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.

В качестве обходного пути вы можете переключиться с неон к крепостной библиотека. Выполните действия на клиентской машине:

  1. Открыть файл %APPDATA%\Subversion\servers
  2. найти [global] раздел
  3. Добавьте следующую опцию в [global] раздел: http-library=serf
  4. Сохраните файл серверов и повторите попытку.

Вы столкнулись с ошибкой в ​​этом фрагменте кода проверки в 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), чтобы проверить, что он отправляет в этом заголовке?