Доступ к файлам ASP.NET в общей папке другого компьютера

У меня есть проект ASP.NET, который выполняет доступ к файлам и манипулирует ими, методы, которые я использую для доступа к файлам, приведены ниже. Теперь мне нужно получить доступ к файлам в общей папке другого сервера, как это сделать? Я легко могу изменить путь к файлу на путь к общей папке, но получаю сообщение об ошибке «не могу получить доступ», потому что общие ресурсы защищены паролем. Насколько я понимаю, мне нужно как-то отправить учетные данные на удаленный сервер перед выполнением методов ниже. Как это сделать?

FileStream("c:\MyProj\file.doc", FileMode.OpenOrCreate, FileAccess.Write)
Context.Response.TransmitFile("c:\MyProj\file.doc");

С уважением, Томас


person Tomas    schedule 05.05.2010    source источник


Ответы (1)


Приложение ASP.NET (по умолчанию) будет выполняться в IIS6 под учетной записью компьютера «ASPNET». Поэтому у вас есть несколько вариантов:

  • Настройте приложение ASPNET для запуска под (слабой) учетной записью домена с разрешениями на доступ к общему ресурсу удаленного компьютера.
  • Установите разрешения для общего ресурса, чтобы включить доступ «Все» (не рекомендуется)
  • Отключите проверку подлинности с помощью форм и используйте проверку подлинности Windows в приложении ASP.NET. Отключите олицетворение в web.config, и IIS должен передать учетные данные пользователя, который в настоящее время использует ваше веб-приложение, в базовый общий ресурс (я думаю).

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

ХТХ,

Ричард.

person Richard    schedule 05.05.2010
comment
Спасибо за ваш ответ! Ни одно из трех предложенных вами решений не соответствует моим потребностям. Второй вариант кажется простым в реализации, но он предоставит доступ всем пользователям для общего доступа, и, к сожалению, Windows не позволяет полностью скрыть общие ресурсы. Я пытался использовать подключенный сетевой диск для сопоставления общей папки в качестве диска, к сожалению, это не работает и в IIS6. - person Tomas; 05.05.2010
comment
@Tomas - сопоставление сетевого диска - не лучший способ сделать это, поскольку они сопоставляются для каждого вошедшего в систему пользователя, а не для каждого компьютера. В блоге Скотта Хансельмана для этого есть обходной путь, если вам это нужно. Вы можете попробовать создать новую учетную запись пользователя домена (возможно, называемую WebShare или что-то в этом роде) и дать ей права на чтение вашей сетевой папки. Затем вы можете щелкнуть правой кнопкой мыши приложение в IIS6, перейти в «Свойства» и изменить рабочий процесс на WebShare. Это заставит ваше веб-приложение принять идентификатор WebShare, и, таким образом, оно сможет получить доступ к общему ресурсу. - person Richard; 05.05.2010