2016-08-13 11 views
0

Я хочу прочитать имена файлов pdf-файлов из папки сетевого ресурса, соответствующие определенным параметрам, и предоставить ссылку для просмотра их на странице сведений о моей модели. Все, что мне нужно - это имя файла. В настоящее время мне не нужно управление файлами/чтение/запись.Чтение файлов с удаленного диска в приложении Intranet

Я могу показать .pdf в браузере, если у меня есть путь (IE откроет ссылки «file: //»). Часть, которую мне не хватает, - это получение имен файлов из удаленного (но такого же домена) каталога во время выполнения.

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

Я пробовал Олицетворение, но это, похоже, не работает, поскольку я все еще получаю доступ, отрицается ошибка.

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

Пример кода, как я мог бы нормально прочитать некоторую информацию из одного файла в виртуальном каталоге:

// This example code is inside a controller action, so Server refers to HttpContextBase 
var path = Server.MapPath("~/MyVirtualDirectory/" + fileName); 
var fileExists = System.IO.File.Exists(path); 
var fileLastModified = System.IO.File.LastWriteTime(path); 

перечислить через соответствующие файлы в каталоге, я использовал DirectoryInfo

var pdfFileNames = new List<string>(); 
var dir = new DirectoryInfo(Server.MapPath("~/VirtualDirectory/")); 
var pdfs = dir.EnumerateFiles("*.pdf"); 
foreach (var pdf in pdfs) 
{ 
    pdfFileNames.Add(pdf.Name); 
} 

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

Edit: Теперь, когда он работает, я отобразить файлы с помощью виртуального каталога

http://server/appName/virtualDirectory/pdfFileName 

ответ

1

По умолчанию пулы приложений IIS работать под конкретной локальной идентичности Windows, под названием IIS AppPool \ [NameOfYourAppPool]. Это локальный пользователь, и не удастся предоставить разрешения для этого удостоверения для доступа к ресурсам, расположенным на другом компьютере.

Если оба сервера находятся в одном домене, вы можете попробовать следующие решения:

  • Запустите приложение IIS под пользователем домена и предоставить необходимые разрешения для этого пользователя домена.
  • Запустите приложение IIS под идентификатором NetworkService и предоставите разрешения для учетной записи DOMAIN \ MACHINENAME $ на сервере IIS.
+0

Мы построили первое предложение для решения проблемы. Затем пользователь был настроен как служба. Теперь я могу читать из удаленного виртуального каталога по своему желанию. Спасибо за совет! – Jecoms

+0

Обычно это лучший выбор, потому что ваши разрешения не зависят от машины, на которой развертывается ваш веб-сайт. –

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

  • Нет связанных вопросов^_^