Моя страница ASP считывает файл из общего каталога и отправляет его пользователю.
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Disposition:", string.Format("attachment; filename={0}", fileName));
Response.WriteFile(filePath);
Response.End();
Этот код ASP работает на веб-сервере, я полагаю, он работает как учетная запись локальной системы, потому что IIS. filePath указывает на файл на файловом сервере \\ fileserver \ shared \ abc.pdf
Когда я отлаживаю код на своем локальном компьютере, файл правильно читается со страницы ASP. Однако, когда я запускаю его на веб-сервере, он не может прочитать файл. Какое разрешение мне нужно предоставить \ fileserver \ shared, чтобы страница ASP правильно считывала файл? Очевидно, что Локальная система не является допустимым пользователем для входа на страницу разрешений.
Рабочий процесс ASP.NET запускается с использованием идентификатора пула приложений, настроенного в IIS. В IIS 6 и выше по умолчанию используется сетевая служба (как указывает splattne).
Если вам нужно получить доступ к удаленным файлам из вашего приложения ASP.NET, я бы рекомендовал создать конкретную учетную запись домена и запустить пул приложений от имени этого пользователя, а также предоставить этому же пользователю доступ к общему ресурсу. Таким образом, вы можете контролировать, кто получает доступ к файлам. Сетевая служба - это встроенная учетная запись, которая существует на всех машинах WinXP (и выше), поэтому вы не захотите открывать общий ресурс до этого.
Другое решение - просто повысить уровень кода, который обращается к общему ресурсу, для использования имени входа в домен, но позволить остальному коду ASP.NET работать как сетевая служба. Это, вероятно, более безопасно, хотя тогда вам нужно выяснить, как безопасно хранить учетные данные.
-дэйв
Сетевая служба и локальная система отображаются в сети как учетная запись компьютера (DOMAIN \ computer $). Поэтому вам необходимо предоставить этой учетной записи разрешение на общий файловый ресурс, если вы не можете использовать учетную запись обычного пользователя.
В Windows Server 2003 (IIS 6.0) код ASP.NET работает как
Network Service
учетная запись. Итак, дайте этой встроенной учетной записи разрешение на чтение папки.
Статья Microsoft TechNet: IIS и встроенные учетные записи (IIS 6.0)
У встроенной учетной записи пользователя сетевой службы меньше прав доступа в системе, чем у учетной записи пользователя LocalSystem, но учетная запись пользователя сетевой службы по-прежнему может взаимодействовать по всей сети с учетными данными учетной записи компьютера.
Для IIS 6.0 рекомендуется, чтобы идентификатор рабочего процесса, определенный для пулов приложений, выполнялся как учетная запись пользователя сетевой службы, которая является настройкой по умолчанию. В следующей таблице показаны привилегии пользователей по умолчанию для учетной записи сетевой службы, а также способы получения каждой привилегии.