ASP.net尝试将文件上载到Windows Server 2008 R2 Web服务器时出现“访问path被拒绝”错误

我有一个asp.net web应用程序,将file upload到Web服务器上的特定文件夹。 本地一切工作正常,但是当我将应用程序部署到Web服务器,我开始得到错误“访问path”D:\ Attachments \ myfile.doc“被拒绝”。 我给了“IIS AppPool”用户该应用程序在该文件夹的完全权限下运行。 我甚至给了“每个人”完全的权限,但是有同样的错误。

我将该文件夹添加到Antivirus的“例外”列表中,但结果相同。 我开始怀疑,也许Windows Server 2008 R2需要一个技巧,我的上传工作。 我非常感谢你的帮助。

谢谢

您的asp.net帐户{MACHINE}\ASPNET不具有对该位置的写入权限。 这是它失败的原因。

考虑将资源的访问权限授予ASP.NET请求标识。

右键单击下载文件夹Properties > Security Tab > Edit > Add > locations > choose your local machine > click OK > Type ASPNET below "Enter the object name to select" > Click Check Names选中所需的访问权限( Full Control ) 。 如果它不能为你工作,就和Network Service

现在这应该显示您的本地{MACHINENAME}\ASPNET帐户,然后您将写入权限设置为此帐户。

否则,如果应用程序通过<identity impersonate="true"/> ,则身份将是匿名用户(通常为IUSR_MACHINENAME )或经过身份validation的请求用户。


或者只是使用专用的位置来存储ASP.NET中的文件是App_Data 。 要创build它,请右键单击ASP.NET项目(在Visual Studio中) Add > Add ASP.NET Folder > App_Data 。 那么你就可以将数据保存到这个位置:

 var path = Server.MapPath("~/App_Data/file.txt"); System.IO.File.WriteAllText(path, "Hello World"); 

右键单击您的服务器或本地计算机上的文件夹,并授予完全权限

IIS_IUSRS

而已。

问题可能是networking服务没有读取权限

salution:

右键点击上传文件夹 – >属性 – >安全 – >编辑 – >添加 – >input:networking服务 – >checkbox完全控制允许 – >按下确定或应用

如果有人因为这是谷歌的第一个结果而绊倒了这个,

请记住在SaveAs方法中也要指定文件名。

将无法正常工作

 file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation)); 

你需要这个:

 filename = Path.GetFileName(file_upload.PostedFile.FileName); file_upload.PostedFile.SaveAs(Server.MapPath(SaveLocation + "\\" + filename)); 

我假定SaveAs方法会自动使用上传的文件名。 保持“访问被拒绝”错误。 不是很实际的问题描述

我遇到过这个问题一次,在我的情况下,soln是closures任何使用/访问该文件的任务pipe理器中的任何进程

你有没有看过高级安全设置?

像下面的图像将文件夹的权限更改为IIS_IUSRS

在这里输入图像说明

我知道这个游戏已经很晚了,但是我想分享一下,以帮助别人。

您的确切情况可能不适用,但我有类似的情况,并设置文件属性帮助。

尝试将“文件”属性设置为“正常”:

 var path = Server.MapPath("~/App_Data/file.txt"); File.SetAttributes(path, FileAttributes.Normal); System.IO.File.WriteAllText(path, "Hello World"); 

我希望这可以帮助别人。

转到根文件夹

右键单击,单击属性

select标签安全

点击编辑

点击添加

input“EveryOne”

点击OK

检查完全控制

点击OK