ASP.NET - 在应用程序外部读取和写入文件系统

时间:2009-09-25 21:38:23

标签: c# asp.net iis permissions

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

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

...我通常必须向C:\logs\app.log组授予对IIS_IUSRS的读/写权限。这使得在新系统上设置应用程序变得很烦人,其中需要访问的目录可以位于不同的位置。有没有办法告诉ASP.NET它应该访问哪些目录?

2 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:2)

您还可以将AppPool设置为在具有相应凭据的帐户下运行。

相关问题