ASP.NET — копирование файлов на подключенный сетевой диск

Я пытаюсь скопировать файл из папки на диске C на подключенный сетевой диск (Z) по адресу \address\content\

Однако я получаю следующее сообщение об ошибке:

System.UnauthorizedAccessException: Access to the path '\\192.168.100.227\content\2-Banner-20120402120304.png' is denied.
   at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.File.InternalCopy(String sourceFileName, String destFileName, Boolean overwrite)
   at System.IO.File.Copy(String sourceFileName, String destFileName, Boolean overwrite)
   at Admin.Controllers.OffersController.UploadNewFiles(OfferModel offer)

Я проверил настройки безопасности для каталога и вижу, что следующий пользователь имеет полный доступ к папке

  • IUSER
  • СИСТЕМА
  • СЕТЕВАЯ УСЛУГА
  • Стойка
  • Стивен Уэйд
  • Администраторы
  • Пользователи

Любые идеи, почему я не могу скопировать их через ASP.NET?

Стивен


person swade1987    schedule 02.04.2012    source источник


Ответы (2)


Тег указывает на сопоставленный диск, и это не сработает, поскольку эти диски не сопоставлены для этих пользователей (это не общесистемная настройка).

Даже если это не использование подключенного диска, а общий ресурс, это действительно плохая идея. То, что я сделал раньше, это реализовать FileWatcherService с использованием класса FileSystemWatcher и скопировать его с помощью API, служба работает как известный пользователь ДОМЕНА, и у него есть все разрешения. Так же легко, как затем поместить файл в отслеживаемый каталог, ваша служба может очистить этот файл после проверки копии, что мне кажется немного более аккуратным.

Вы даже можете записать файл в другой каталог и следить за тем, чтобы он был скопирован :)

person krystan honour    schedule 02.04.2012
comment
Привет, Кристан, у тебя случайно нет ZIP-версии этого приложения? - person swade1987; 02.04.2012
comment
Нет, я написал это для компании и не владею кодом, кроме того, без обид, но мне как бы платят за то, что я пишу такие вещи. Ничего особенного, хотя в Google есть множество ссылок, например: forums.asp.net/ т/1438769.aspx/1 - person krystan honour; 02.04.2012

Вы копируете файлы с одного компьютера на другой, но СЕТЕВАЯ СЛУЖБА — это локальная учетная запись, которая отличается для обоих компьютеров. Поэтому вам нужна учетная запись домена для запуска вашего рабочего процесса.

person IvanH    schedule 02.04.2012