EvsizTospaa Ответов: 2

Доступ к общему сетевому диску VFS через веб-сайт ASP и просмотр файлов внутри, возможная ошибка IIS


У меня есть ASP.NET веб-сайт, который должен получить доступ к общему сетевому диску. Общий сетевой диск находится на пути EMC или ECS. Модуль управления для общих дисков сделан EMC, доступный через браузер, так что я предполагаю.

В файле web.config у меня есть имена дисков Z:, R: и т. д..

Я могу смонтировать их в строке cmd с помощью следующей строки. В противном случае доступ windows к папке VFS через адресную строку или браузер отсутствует.

mount -o xx.xx.xx.xx://vfs/folder_I_need_to_Access_to. Z:


Я изменил код программы, смонтировал диски и могу получить доступ к файлам во время отладки кода в веб-браузере. Однако, как только я публикую свой код на сервере IIS, код, похоже, не получает доступа к файлам и не просматривает их, даже если диск монтируется как сетевой диск и доступен через Проводник windows. Я проверил разрешения как на EMC manager, так и на Windows и IIS.

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

Если вам нужна дополнительная информация по этому вопросу, не стесняйтесь спрашивать, я прочесал интернет и применил все решения, кстати. Как и NekoDrive, сетевые утилиты библиотек

tldr; программа, развернутая на IIS, не может получить доступ к сетевым общим папкам в каталоге vfs, в то время как ее владелец и отлаженный код на localhost могут это сделать.

Что я уже пробовал:

добавление сетевых папок в IIS в качестве виртуальных каталогов также не работает, однако я могу получить доступ к файлам и папкам через представление содержимого диспетчера IIS, поэтому я предполагаю, что IIS может сканировать каталоги и имеет соответствующие разрешения для папок. Кроме того, пользователь, запускающий веб-сайт, является администратором домена и может также получать доступ к каталогам.

2 Ответов

Рейтинг:
10

EvsizTospaa

Я наконец-то решил эту проблему.

На случай, если кто-то еще здесь споткнется,

Поскольку монтирование дисков было невозможно, я изменил web.config, чтобы иметь IP-адрес вместо буквы смонтированного диска в диспетчере IIS, Редакторе конфигурации.

Поэтому вместо Z:\ , K:\ или F:\

теперь он говорит:;

\\XX.XX.XX.XX\VFS\SHARED_FOLDER


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

\\XX.XX.XX.XX\VFS\SHARED_FOLDER\file_path/file_path/file_name


Поскольку он будет четко показывать IP-адрес машины, когда ссылка для загрузки будет завешена, я шифрую и расшифровываю переменную link во время выполнения.


Рейтинг:
1

Richard Deeming

Когда вы сопоставляете / монтируете сетевой диск, это сопоставление применяется только к вашему сеансу.

IIS запускает приложение в другом сеансе от имени другого пользователя. Код не будет иметь доступа ни к каким дискам, сопоставленным в рамках вашего сеанса.

Если пользователь пула приложений имеет разрешение на монтирование папки VFS, вы можете вероятно уметь пользоваться Process.Start чтобы запустить программу mount команда при запуске приложения. Вы также хотели бы проверить System.IO.DriveInfo.GetDrives чтобы посмотреть, установлен ли он уже.


EvsizTospaa

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