所以我的网站代码路径如下:
C:/ folder1 / folder2 / folder3 /我在VS2012上发布的网站代码 - 在我的网站上我收到了一个附件,我想把它保存到以下路径C:/ folder4
当我尝试以下代码时:file.SaveAs(Server.MapPath(“../../ folder4 /”)+ filename);它说我要经过根。有人可以向我解释发生了什么以及我是否以及如何解决这个问题?
答案 0 :(得分:1)
Server.MapPath()用于获取与服务器根相关的路径。由于您尝试将其保存在服务器虚拟目录之外,因此您可能只需对文件进行硬编码。
file.SaveAs(@"C:/folder4/" + filename);
根据您的IIS工作线池权限,它可能无法正常工作。
答案 1 :(得分:0)
file.SaveAs(Server.MapPath(“folder4 /”)+ filename); 因为我看不到你的文件夹结构,所以我建议在Server.MapPath()之后设置一个断点来查看完整的URI路径以确定你的下一步,因为它说你已经过了root,你可能会有一对多的“../”字符串。
答案 2 :(得分:0)
根据the documentation for HttpServerUtility.MapPath:
您无法指定Web应用程序之外的路径
这正是你想要做的。如果您将“根”解释为应用程序的根文件夹,那么甚至是错误消息告诉您的内容。
要么
我可能会建议选择2.因为它会减少麻烦。权限和托管在同一服务器上的多个站点。
答案 3 :(得分:0)
Server.MapPath(...)
尝试返回您为其提供的虚拟或相对路径的物理(“真实”)目录。而且由于虚拟目录无法在这个意义上“定位”根目录,因此您尝试做的事情毫无意义。你可以从domain.com/somefolder
转到domain.com/
,但你真的不能再往前走了。
您可以使用Environment.CurrentDirectory
作为查找文件夹的起点,除此之外,只需使用SaveAs(..)
,就像您现在一样。