C#MVC在尝试写入文件时访问路径被拒绝

时间:2011-10-01 19:51:06

标签: c# access-denied file-writing

我有一个MVC应用程序,用户可以在其中上传文件。在我写上传文件之前,我根据日期时间创建一个目录。我从C:\ApplicationName开始,在完成上传时(理论上)结束C:\ApplicationName\20111001\Filename.ext

我在本地Windows 7计算机上遇到的问题是我无法写入该文件。

我得到"access denied"例外,无论我给哪个用户完全访问该目录。奇怪的是,日期目录创建得很好。

我已授予以下用户完全访问权限:

  • [当前登录用户]
  • 网络服务
  • IUSR
  • IIS_IUSRS
  • 客人
  • 每个人

没有任何成功。我真的不明白这里发生了什么。当我给Everyone完全访问权限时,我应该能够创建一个文件吗?

PS:我直接使用Visual Studio 2010和ASP.NET Development Server。

4 个答案:

答案 0 :(得分:1)

检查父文件夹的权限并确保它们是可继承的,您可以在高级选项窗口中进行检查。

答案 1 :(得分:1)

这可能会有所帮助......可能应用程序池权限是罪魁祸首:

IIS AppPoolIdentity and file system write access permissions

答案 2 :(得分:1)

  

我没有运行IIS,我正在运行淡化版本“ASP.NET   开发服务器“。所以我非常有限

问题是,为了从应用程序写入文件目录,您需要以管理员身份运行Visual Studio。

Windows 7阻止进程进入其沙箱,因为它以有限的权限运行。即使您的帐户是管理员,也是如此。

答案 3 :(得分:0)

我自己也有同样的问题。默认情况下,IIS7 AppPools使用AppPoolIdentity。只需在IIS管理控制台中打开AppPools,选择您遇到问题的AppPools,选择高级设置,然后在流程模型下将Indentity更改为Built-in Acoount>的网络服务即可。 由于您已经为您的文件夹授予了NETWORK SERVICE访问权限,因此一切都应该有效。