环境:Windows 2008 R2 x64 [IIS7.5]
从我的asp.net应用程序,我正在尝试访问不在Web应用程序文件夹下的文件夹。它类似于DirectoryInfo(“D:\ MySecretFolder”) 我被抛出以下错误。
'System.Security.Permissions.FileIOPermission,mscorlib, Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089' 失败
应用程序池使用NetworkService帐户作为其标识,并且我已为该帐户授予该帐户的完全权限。还有什么我想念的。
由于
答案 0 :(得分:1)
如果您尝试通过系统的IIS访问任何文件,则必须为IIS用户帐户授予对该文件的访问权限,而不仅仅是应用程序池。我不确定这些帐户是否与所有版本的IIS相同,但我知道IIS 7使用这些帐户:
IUSR 和 IIS_IUSRS
当然,这是假设您在IIS中运行它。
答案 1 :(得分:0)
访问目录外的物理文件就像访问任何其他应用程序中的任何其他文件一样。关键是要在您尝试获取访问权限时了解您是谁。如果您正在使用IIS(我认为是这种情况),您的应用程序正在应用程序池中运行。应用程序池由特定用户帐户识别到系统。您可以使用IIS控制台(可能是IIS_WPG成员的默认用户)进行检查。
当您尝试访问WebApp外部的目录时,在特定用户的竞争中运行的IIS的工作进程必须能够访问所需的文件/目录。您可以授予用户访问此特定权限的权限(例如,通过文件系统),IMPERSONATE有权访问此资源的用户以获取此特定需求(通过模拟api和Principal相关的classess)。
还有一件事是代码访问安全性。我不知道你是否使用它,甚至不知道它,但知道框架提供的设施是好的