AnkhSVN нарушает разрешения на совместное использование ASP.NET в SVN 1.7

Предыстория (пропустите до конца, если вам нужен вопрос)

Недавно я обновил SVN-репозиторий (размещенный на assembla) до SVN 1.7. После этого мы начали периодически сталкиваться с большим количеством ошибок File Access Denied на страницах сайта ASP.NET, которые находятся в локальной рабочей копии репозитория.

Некоторые папки также начали получать странные разрешения на файлы (они стали помечены как доступные только для чтения), а общий доступ пользователей к ним был удален. Эти проблемы возникали только после цикла обновления/коммита, через плагин AnkhSVN для Visual Studio, но не постоянно; казалось, что он очень темпераментный.

Единственное временное решение, которое мы нашли на данный момент, это зафиксировать все оставшиеся изменения, удалить локальную копию и заново проверить полную рабочую копию (с помощью TortoiseSVN). Однако это не является жизнеспособным решением, и это серьезно влияет на производительность.

Этот сайт представляет собой ASP.NET WebWorkerRole на базе Azure. Он никогда не вызывал проблем до обновления до SVN 1.7. Я пытался изменить внутренние разрешения IIS, чтобы обойти проблему, но безрезультатно.

Моя среда

  • Visual Studio 2010 Ultimate 10.0.40219.1 SP1
  • AnkhSVN 2.3.10509 (последняя версия, поддерживает SVN 1.7.1)
  • TortoiseSVN 1.7.1, Build 22161 - 64 Bit
  • Запуск в режиме отладки через среду эмулятора Azure

Вопрос

Возможно ли, чтобы SVN 1. 7 или любой из инструментов в моей среде нарушить права доступа к файлам так, что файлы становятся непригодными для использования на сайте ASP.NET? И, что более важно, как это исправить?


Точная ошибка разрешения файла, выводимая на экран, выглядит так:

Доступ к пути '//file//' запрещен.

Описание: Не обработанное исключение произошло во время выполнения текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Подробности исключения: System.UnauthorizedAccessException: Access to the пути '//file//' запрещен.

ASP.NET не авторизован для доступа к запрошенному ресурсу. Рассмотрите возможность предоставление прав доступа к ресурсу для запроса ASP.NET идентификация. ASP.NET имеет идентификатор базового процесса (обычно {MACHINE}\ASPNET в IIS 5 или Network Service в IIS 6 и IIS 7, и настроенная идентификация пула приложений в IIS 7.5), которая используется, если приложение не выдает себя за другого. Если приложение выдает себя за пользователя через , идентификатором будет анонимный пользователь (обычно IUSR_MACHINENAME) или аутентифицированный пользователь запроса.

Чтобы предоставить ASP.NET доступ к файлу, щелкните файл правой кнопкой мыши в Проводнике, выберите "Свойства" и выберите вкладку "Безопасность". Нажмите "Добавить", чтобы добавить соответствующего пользователя или группу. Выделите учетную запись ASP.NET и установите флажки для желаемого доступа.

Но чистая рабочая копия не будет выдавать эту ошибку. Сравнивая разрешения этих двух копий, кажется, что рабочие копии, в которых нет ошибок, имеют общий доступ (с IUSR и локальной учетной записью), в то время как у сломанных копий общий доступ нулевой, но пользователь никогда не меняет общий доступ.

6
задан Peter Mortensen 10 March 2017 в 00:49
поделиться