Моя страница 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 правильно читала файл? Очевидно, что локальная система не является допустимым пользователем для входа на страницу разрешений.

0
yyykk 30 Июл 2009 в 17:56
Невозможно изменить идентификатор пула приложений, так как это повлияет на все другие веб-страницы, обслуживаемые тем же сервером. В текущей среде также невозможно сохранить пароль в файле. Думаю сделать удаленный вызов другому процессу на файловом сервере и передать содержимое файла через удаленный вызов. Или есть более простой способ, чем этот?
 – 
yyykk
30 Июл 2009 в 20:20

2 ответа

IIS по умолчанию запускает свои пулы приложений как «Сетевая служба». Это локальная учетная запись в поле IIS. Если вы хотите получить доступ к общему сетевому ресурсу, вам необходимо перенастроить идентификатор пула приложений на учетную запись с доступом к общему ресурсу, например учетную запись домена.

Если оба ящика не находятся в домене, вы можете создать имя пользователя и пароль на обеих машинах (одинаковые на обеих машинах) и использовать их для пула приложений, установив разрешения на общий ресурс, чтобы разрешить доступ этому (локальному) пользователю на файловый сервер

1
blowdart 30 Июл 2009 в 18:00

Вы можете попытаться выдать себя за пользователя, которому разрешен доступ к общему ресурсу. Добавьте это в свой web.config:

<identity impersonate="true" userName="accountname" password="password" />
0
Scoregraphic 30 Июл 2009 в 18:00
Тьфу, всегда плохая идея вставлять пароль в web.config. Если вы пойдете по этому пути, вы должны зашифровать свой web.config, чтобы скрыть его.
 – 
blowdart
30 Июл 2009 в 18:09