невозможно получить доступ к файлам на другом физическом диске с веб-сайта asp.net

Мой веб-сайт опубликован в папке c:\inetpub\wwwroot, и у меня есть несколько больших текстовых файлов на диске D:, к которым мне нужно получить доступ. Допустим, точное местоположение — D:\Test\test.txt. Когда мой веб-сайт работает, он продолжает давать сбой при проверке File.Exists(). Я пробовал следующее, но никто не работал:

  • Создал виртуальный каталог из IIS, чтобы указать на эту папку и использовал Server.MapPath в коде.
  • Предоставил сетевой службе доступ на чтение к этой тестовой папке
  • Поделился папкой с сетевой службой и на веб-сайте указал путь UNC.

Все вышеперечисленное не помогло, и сайт по-прежнему говорит, что файл не существует, но он есть. Любые идеи?

РЕДАКТИРОВАТЬ: Ниже приведены несколько неудачных попыток, которые я поместил в Page_Load:

if (File.Exists(@"D:\Test\test.txt"))
{ ... }

if (File.Exists(Server.MapPath("TestVirtualDir/test.txt")))
{ ... }

person user1715925    schedule 23.02.2013    source источник
comment
Можете ли вы установить символическую ссылку под wwwroot на d: \? stackoverflow.com/questions/9042542/   -  person rene    schedule 23.02.2013
comment
Я могу попробовать это, однако это необходимо? Кажется, мне должно быть намного проще получить доступ к файлам D:\...   -  person user1715925    schedule 23.02.2013
comment
Основываясь на том, что вы уже пробовали, я подумал, что у вас нет вариантов ... Я помню, что iis не любит блуждать по другим путям, не находящимся под путем приложения. Возможно, вам следует поделиться кодом/разметкой, которую вы используете для обслуживания этих файлов, на диске D:\   -  person rene    schedule 23.02.2013
comment
Если вы добавите Trace.Write(Server.MapPath(TestVirtualDir/test.txt)) перейдите на страницу и посмотрите, что находится в trace.axd? Разрешение, которое вы пишете, читается, вы также дали выполнение и список содержимого папки? Вы уверены, что сетевая служба — это идентификатор, который используется в домене приложения?   -  person rene    schedule 24.02.2013
comment
Я убедился, что Server.MapPath указывает на правильное физическое расположение. Я почти уверен, что сетевая служба используется, так как я помню, что мне нужно было добавить это разрешение для другого веб-сайта на том же сервере, как мне это проверить?   -  person user1715925    schedule 24.02.2013
comment
давайте продолжим это обсуждение в чате   -  person rene    schedule 24.02.2013
comment
Я проверил и оказалось, что вы были правы, вместо сетевой службы использовалась другая учетная запись пользователя под пользователем IIS. продолжайте и добавьте комментарий, чтобы я мог пометить его как ответ.   -  person user1715925    schedule 25.02.2013


Ответы (1)


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

person rene    schedule 25.02.2013