2010-08-20 2 views
2

У меня есть webapp, который имеет доступ для чтения/записи/выполнения в каталог с псевдонимом. Когда я нахожусь в режиме отладки в Visual Studio, следующее утверждение работы:Directory.Move() работает в режиме отладки, но не при развертывании

Directory.Move("\\\\localhost\\Alias\\oldDirectory","\\\\localhost\\Alias\\newDirectory"); 

Конечным результатом является то, что oldDirectory теперь в совмещенного каталоге newDirectory.

Но, когда я проверяю этот код в опытном, я oldDirectory и newDirectory в совмещенном каталоге. Directory.Move ведет себя как будто только копирует oldDirectory в newDirectory.

Почему это происходит?

ответ

0

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

3

Это, скорее всего, вопрос с разрешениями.

Учетная запись пользователя, выполняющая эту команду, вероятно, имеет разрешения на создание/запись, но не удаление разрешений в каталоге с псевдонимом. Я бы проверял, имеет ли учетная запись пользователя, выполняемая программой в соответствии с правами на удаление/удаление подпапок и файлов.

Edit:

Чтобы проверить эту теорию, я бы временно предоставить группу пользователей Полный доступ на папку, чтобы увидеть, если проблема исчезнет.

+0

Как бы вы выбрали удаление разрешений? Из того, что я могу сказать, если у меня есть права на запись, у меня также есть разрешения на удаление. Чтобы изменить разрешения каталога с псевдонимом, выполните следующие действия: 1) щелкните правой кнопкой мыши папку и выберите «совместное использование и безопасность». 2) перейдите на вкладку «Обмен веб-сайтами», затем нажмите «edit permissions» 3) в появившейся форме я вижу только «читать», «писать», ..., но ничего подобного «удалить». Я ищу не в том месте? – Davidann

+0

TBH Я не уверен, что предоставление разрешений на запись с вкладки «Веб-доступ» также предоставляет разрешения на удаление. Я бы ожидал этого, но вы должны иметь возможность дважды проверять, просматривая разрешения для отдельных пользователей/групп на вкладке «Безопасность». Разрешения, на которые я ссылался выше, были из диалогового окна «Дополнительно» на вкладке «Безопасность». –

0
  • Убедитесь, что папка не находится под защитой от записи, и ни один процесс не имеет доступа к каким-либо файлам в момент, когда вы пытаетесь переместить папку.

  • Также проверьте, предоставили ли вы разрешения безопасности правильному пользователю, проверив, под какой учетной записью пользователя работает пул приложений.

  • Вы могли бы также рассмотреть вопрос о разработке на локальном IIS для предотвращения подобных ситуаций в будущем (я был там, а не приятно)

Смежные вопросы