我有一个MVC应用程序,用户可以在其中上载文件。在写入上传的文件之前,我会根据日期时间创建一个目录。我从C:\ApplicationName开始,直到上传完成(理论上)后,以C:\ApplicationName\20111001\Filename.ext结尾。
我在本地Windows 7计算机上的问题是我无法写入文件。
无论我向哪个用户授予对该目录的完全访问权限,我都会得到一个"access denied"异常。奇怪的是,创建日期目录就好了。
我已授予以下用户完全访问权限:
[当前登录用户]
网络服务
研究所
IIS_IUSRS
来宾
大家
没有任何成功。我真的不明白这里发生了什么。当我向所有人授予完全访问权限时,我应该能够创建文件吗?
PS:我直接使用Visual Studio 2010和ASP.NET开发服务器。
我认为您使用MVC的事实并不是问题的一部分。 不确定(我对MS Web服务器权限了解不多),但是您可能还需要设置应用程序信任级别。 当您部署到IIS时,您需要检查您的应用程序池以查看您的代码以哪个用户身份运行。
发布写文件的代码行,文件名的确切值(首先尝试使用诸如@" C: ApplicationName 20111001 Filename.ext"之类的编码值)和异常信息。 否则应该可以工作,因为您能够创建文件夹。
我已经完成了您所说的事情:System.IO.File.WriteAllBytes(@" C: ApplicationName 20111001 Filename.ext",新字节[1] {0}); 但是仍然会出现异常,"拒绝访问路径C: ApplicationName 20111001"
I am not running IIS, I am running the watered down version"ASP.NET
Development Server". So I am quite limited
问题是,为了使您能够从应用程序写入文件目录,您将需要以管理员身份运行Visual Studio。
Windows 7阻止该进程进入其沙箱,因为它以有限的权限运行。即使您的帐户是管理员,也是如此。
这可能会有所帮助...可能是应用程序池权限是这里的元凶:
IIS AppPoolIdentity和文件系统写访问权限
我没有运行IIS,但运行的是淡化版本" ASP.NET开发服务器"
检查父文件夹的权限并确保它们是可继承的,您可以在高级选项窗口中进行检查。
我已经尝试过,但是仍然出现"访问被拒绝"异常。
比发布更多信息。
我自己也遇到了同样的问题。默认情况下,IIS7 AppPools使用AppPoolIdentity。只需在IIS管理控制台中打开您的AppPools,选择您遇到问题的那个,选择"高级设置",然后在"流程模型"下,将"身份标识"更改为"内置Acoount">" NetworkService"。
由于您已经向您的文件夹授予了网络服务访问权限,因此一切正常。
我没有运行IIS,而是运行了精简版" ASP.NET开发服务器"。 所以我很有限。