1

我开发了一个 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)

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

现在我知道系统工作正常并且写得很好,因为我在第二台机器上有同样的网络应用程序,将 PDF 写入 C 驱动器没有问题。这第二台机器我只是无法让它允许写入。

4

1 回答 1

4

哦,为了所有神圣的事物的爱,请放下键盘和鼠标,停止你正在做的事情。你列表中的一些行为让我很害怕。你列出的所有行为很可能是无用的,或者充其量是非常随机的。作为一名 Web 开发人员,您不必为更改文件夹的所有权而烦恼,尤其是 Web 服务器通常使用的 Web 根文件夹。当你这样做时,你最终会来到一个黑暗、寒冷和孤独的地方。上帝只知道你采取了哪些其他绝望的措施。为了您自己的利益,我建议您进行系统还原甚至重新安装系统,以确保您处于健康状态。

让我们退一步,试着理清你在做什么。
首先:您要写入的路径是什么?
第二:您是直接在 Visual Studio 中还是在 II 中运行此应用程序?

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

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

找出您正在运行的帐户并确定您尝试写入的路径的最简单方法是启动SysIntenals 进程监视器access denied并找到带有结果的条目。选择该条目的属性并找出哪个帐户尝试执行写入操作。确定后,右键单击有问题的文件夹并授予适当的帐户写入权限。

于 2012-07-03T21:47:10.150 回答