Назад | Перейти на главную страницу

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

Моя страница 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 рекомендуется, чтобы идентификатор рабочего процесса, определенный для пулов приложений, выполнялся как учетная запись пользователя сетевой службы, которая является настройкой по умолчанию. В следующей таблице показаны привилегии пользователей по умолчанию для учетной записи сетевой службы, а также способы получения каждой привилегии.