写入文件时拒绝访问。为什么?

时间:2012-07-03 21:36:38

标签: asp.net permissions

我开发了一个ASP.NET v4 Web应用程序,我试图写入webroot中的文件夹。

对于我的生活,我不能让Windows 7允许它写一个文件,我每次都得到Access is Denied错误。

我在该文件夹上尝试过的是

attrib -r /foldernameandpath
attrib -r -s /foldernameandpath
Removing Check from ReadOnly attribute in folder properties
Changed owner to folder to current user whom is also the admin
Changed owner to Everyone
Adding Everyone user to folder with all permissions
Changing the folder to the Public Document directory
Changing to the root of the C drive (Out of desperation)

似乎没有任何作用,我想做的就是测试写作是否有效。

现在我知道系统工作正常并且写得很好,因为我在第二台机器上使用相同的Web应用程序将PDF文件写入C驱动器而没有问题。这第二台机器我不能让它允许写。

1 个答案:

答案 0 :(得分:4)

哦,请为所有圣物的爱,把键盘和鼠标放下来,停止你正在做的事情。列表中的一些操作严重吓坏了我。 你列出的所有行为都很可能是无用的或极其随意的。 作为Web开发人员,您不必开始改变文件夹的所有权,尤其是Web服务器通常使用的Web根文件夹。当你这样做时,你将最终进入一个黑暗,寒冷和孤独的地方。主只知道你采取了哪些其他绝望的措施。为了您自己,我建议您进行系统还原甚至系统重新安装,以确保您处于健康状态。

让我们回过头来尝试理清你在做什么 第一:你想写的路径是什么? 第二:您是直接从Visual Studio或IIs中运行此应用程序吗?

如果您正在执行第一个选项,则您当前的用户帐户是尝试写入相关路径的帐户。你有写权限吗?
您可以尝试的一件事是使用提升的权限启动Visual Studio,看看是否有效。 如果您在IIs中运行,则需要具有写入权限的关联池帐户。 你有机会冒充假吗?如果是,请确保模拟帐户具有适当的权限。

您应该只写入应用程序路径中的预定义文件夹,例如.. \ App_Data。

找出您正在使用的帐户并确定您要写入的路径的最简单方法是启动SysIntenals process monitor并找到{{1}的条目结果。选择该条目的属性,并找出尝试执行写入操作的帐户。确定后,右键单击相关文件夹并提供正确的帐户写入权限。