Member 12836274 Ответов: 3

Как получить доступ к сетевым дискам из IIS


У меня есть веб-сайт, размещенный на IIS, где я хочу перечислить имя сетевых дисков.Я могу получить имена сетевых дисков, доступных на моем компьютере, когда я запускаю свой веб-сайт из visual studio, но он возвращается пустым при запуске из IIS.Моя версия IIS-10.

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

ВАР дисков = DriveInfo.GetDrives().Где(x => x.DriveType == DriveType.Network);
foreach (DriveInfo d в приводах)
{
Ответ.Пиши(d.Name + "
");
}

3 Ответов

Рейтинг:
2

F-ES Sitecore

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

Что именно и как вы должны изменить зависит от вашей версии IIS и как настроен ваш сайт поэтому google для получения дополнительной информации если это не поможет

Настройка удостоверения анонимной проверки подлинности (IIS 7)[^]


Рейтинг:
2

tlhIn`toq

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

Вместо этого используйте UNC-путь.

https://support.microsoft.com/en-us/help/257174/using-mapped-drives-with-iis[^]

https://support.microsoft.com/en-us/help/207671/how-to-access-network-files-from-iis-applications[^]


Рейтинг:
1

OriginalGriff

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


Richard Deeming

Сетевые диски не подключены к компьютеру, они подключены к сеансу.

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