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