загрузка файла в папку на сетевом диске

Мой серверный компьютер включает в себя:

  1. ИИС 7.
  2. Оконный сервер 2008.
  3. Сетевой диск отображается как диск Z, принадлежащий машине Linux.
  4. Приложение ASP.NET MVC 3, размещенное на сервере.

Проблемы:

Я создал приложение asp.net mvc 3, которое может загружать несколько файлов на локальный диск, но не может загружать на сетевой диск (в моем случае Z:/) моей серверной машины. Он показывает ошибку:

Could not find a part of the path 'Z:\uploadfolder\sdlkfjsdl.wav'.

Затем я проверил параметр безопасности папки (uploadfoler), где у пользователя сетевой службы нет разрешения на полный доступ или разрешение на запись. Проблема здесь в том, что у меня нет прав на добавление разрешения для пользователя NETWORK SERVICE, а сетевой диск принадлежит LINUX manchine.

В поисках альтернативного решения я нашел концепцию, называемую олицетворением. Я совершенно новичок в этой концепции. Это может решить мою проблему в моем сценарии? Или есть ли другое альтернативное решение?


person CodeManiac    schedule 16.01.2013    source источник


Ответы (2)


Ваше приложение должно работать в отдельном пуле приложений IIS. В IIS вы можете назначить пользователя в пул приложений. Этот пользователь должен иметь доступ на запись к сетевому драйверу.

См. http://technet.microsoft.com/en-us/library/cc753842(v=ws.10).aspx

person Richard Schneider    schedule 16.01.2013
comment
как я могу добавить пользователя в пул приложений, у которого есть доступ к сетевому диску в IIS - person CodeManiac; 16.01.2013
comment
У меня есть все пользователи, которые имеют полный доступ к папке подключенного сетевого диска. Могу ли я добавить этого пользователя в APP POOL? - person CodeManiac; 16.01.2013
comment
Нет, пользователь Everyone не будет работать, и я, конечно же, не стал бы запускать пул приложений от имени пользователя Everyone (в любом случае это группа, верно?). Создайте учетную запись специально для этого (при условии, что у вас есть домен Active Directory). - person Jared Peless; 29.01.2013

Хорошо, Z:\ — это ваш сетевой диск, но находится ли он на машине, на которой размещен IIS, без какого-либо сопоставления сетевых дисков? Если он находится на другом компьютере, вам нужно использовать пути UNC (т.е. \сервер\путь\папка\имя файла.ext), потому что пользователь, под которым работает IIS, не будет его отображать.

Вы не будете «добавлять» пользователя в пул приложений... вы создадите явный пул приложений, который запускается от имени именованного пользователя вместо сетевой службы или удостоверения пула приложений. При создании пула приложений вы можете указать пользователя, от имени которого он запускается. Вы можете найти много информации об этом для вашей конкретной версии IIS.

Этому именованному пользователю потребуется разрешение на запись/чтение в настроенный вами путь UNC.

person Jared Peless    schedule 16.01.2013
comment
Я использую UNC-путь (\\11.01.55.11\uploadfolder) и выдает ошибку при загрузке: сетевое имя не найдено. - person CodeManiac; 16.01.2013
comment
при использовании пути UNC отображается ошибка: Доступ к пути '\\101.45.89.10\sharefolder\uploadfolder\3121N_nextjokes.wav' запрещен. - person CodeManiac; 16.01.2013
comment
У вас должны быть достаточные права на запись для пользователя, процесс выполняется как... если вы используете сетевую службу, то она использует имя пользователя для доступа (т.е. MACHINENAME$), но я бы настроил пул приложений для использования определенного учетная запись пользователя NT (например, учетная запись, настроенная как учетная запись службы) и предоставление привилегий этой учетной записи. - person Jared Peless; 29.01.2013