2009-09-25 79 views
2

有没有办法在当前的ASP.NET应用程序之外访问文件系统,而不必提供IIS_IUSRS权限?例如,如果我想这条线的工作:ASP.NET - 读写文件系统,在应用程序之外

logStream = File.Open("C:\logs\app.log", FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 

...我不得不常授予读取/写入权限C:\logs\app.logIIS_IUSRS组。这使得在新系统上设置应用程序变得烦人,需要访问的目录可能位于不同的位置。有什么办法可以告诉ASP.NET它应该访问哪些目录?

回答

6

你可以使用模拟做到这一点,但我会敦促你不要这样做。就安全而言,您正在进入风险很大的领域。如果您不是100%确定您正在冒充的身份的访问权限,那么您将面临真正的风险,即允许黑客访问您不想要的服务器区域。正确设置ACL非常耗时,并且您不希望仅使用管理用户或超级用户。您希望专门为此设置用户,如果您正在这样做,那么您只是为您已经在做的工作添加了一个步骤。

更好的解决方案是将您的应用程序设计为写入应用程序控制的文件夹。您的安装可以在机器上创建文件夹并自动授予权限,而不是依赖于现有的系统文件夹。

http://msdn.microsoft.com/en-us/library/ms998258.aspx#pagguidelines0001_impersonationdelegation

2

您还可以设置您的程序池用适当凭据的帐户下运行。

相关问题