2009-07-30 73 views
0

我的ASP页面从共享目录读取文件并将其发送给用户。IIS服务以本地系统帐户运行,那么如何为其提供共享目录权限?

 Response.Clear(); 
     Response.ContentType = "application/octet-stream"; 
     Response.AddHeader("Content-Disposition:", string.Format("attachment; filename={0}", fileName)); 
     Response.WriteFile(filePath); 
     Response.End(); 

此ASP代码在Web服务器上运行,我猜想它是以本地系统帐户运行的,因为IIS是。 filePath指向文件服务器上的文件\\ fileserver \ shared \ abc.pdf

当我在本地机器上调试代码时,该文件从ASP页面正确读取。但是,当我在Web服务器上运行它时,它无法读取该文件。我需要给予\ fileserver \共享什么权限才能让ASP页面正确读取文件?很明显,本地系统在权限页面中不是有效的用户登录。

+0

无法更改应用程序池标识,因为它会对所有其他网页由同一个服务器servered效果。在当前的环境中,也不可能将密码存储在文件中。 正在考虑对文件服务器上的另一个进程执行远程调用,并通过远程调用传递文件内容。或者有没有比这更简单的方法? – yyykk 2009-07-30 16:20:51

回答

1

默认情况下,IIS将其应用程序池作为“网络服务”运行。这是IIS框上的本地帐户。如果要访问网络共享,则需要将应用程序池标识重新配置为可访问该共享的帐户,例如域帐户。

如果两个盒子都不在一个域中,那么你可以在两台机器上创建一个用户名和密码(在两台机器上都是一样的),并将它用于应用程序池,设置共享上的权限以允许访问)文件服务器上的用户

0

您可以尝试模拟允许访问共享的用户。在你的web.config补充一点:

<identity impersonate="true" userName="accountname" password="password" /> 
+0

呃,在web.config中嵌入密码总是一个坏主意。如果你走这条路线,你应该加密你的web.config来隐藏它。 – blowdart 2009-07-30 14:09:43

相关问题