ASP.NET «доступ запрещен» ошибка доступа к пути UNC - PullRequest
2 голосов
/ 28 марта 2012

Исправление добавлено ниже: рассматриваемый код не является частью приложения IIS 7 (без пула приложений).

У меня есть виртуальный каталог IIS, содержащий страницу aspx со следующим кодом:

System.Net.WebRequest wr = System.Net.WebRequest.Create( @"file://unc-share/directory/file.pdf" );
wr.Credentials = System.Net.CredentialCache.DefaultCredentials;
WebResponse response = wr.GetResponse();

Когда вызывается GetResponse (), я получаю «Доступ к пути \ unc-share \ directory \ file.pdf 'запрещен». ошибка.

У меня есть приложение, настроенное для встроенной аутентификации Windows (все другие типы аутентификации отключены), ASP.NET олицетворение включено.

Мне удалось проверить, что для олицетворения ASP.NET используется то же удостоверение, что и для учетной записи домена Windows, которую я использую для доступа к сайту. Общий ресурс UNC, в котором находится файл, - это отдельная система Windows, в которой не размещается веб-сервер, для этой учетной записи установлены привилегии «Полный доступ».

Я также пытался получить доступ к файлу с помощью экземпляра FileStream, с теми же результатами.

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

Есть идеи?

1 Ответ

2 голосов
/ 29 марта 2012

Доступ к пути, как это:

System.IO.File.ReadAllText(@"\\uncshare\directory\file.pdf");

Важной частью этого фрагмента является форматирование пути и отсутствие WebRequest. Есть несколько методов, которые вы можете использовать, чтобы открыть файл. Я использую File.ReadAllText в качестве примера, но вы также можете легко открыть файл с помощью FileStream.

Нет необходимости использовать WebRequest, поскольку файл не находится за веб-сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...