我的文件结构设置如下:
ServerRoot
applicationRoot
filePage.aspx
files
chart.png
我的应用程序页面filePage.aspx使用另一个应用程序来自定义构建图表。我需要将它们保存在files文件夹中。这就是我们客户的生产服务器的设置方式,我无法改变它。
我做了_page.Server.MapPath("/files")
但它给了我一个InvalidOperationException
并声明无法映射路径'/ files'。
更新
所以必须以这种方式设置MapPath(“/”)。我的本地asp.net服务器无法以这种方式处理MapPath,但我们的IIS开发框没有问题,它工作正常。有趣。 如何将其保存到文件?
答案 0 :(得分:4)
我认为在asp.net 2.0及更高版本中超出虚拟目录的目录结构是违反安全规定的。您需要为目录创建一个虚拟目录并使用它。
答案 1 :(得分:2)
使用
Server.MapPath("~/files")
〜表示Web应用程序的根目录,因此无论您在哪个子目录中,返回的文件夹都是正确的。
答案 2 :(得分:0)
_page.Server.MapPath()
将尝试从应用程序的根目录(而不是服务器的根目录)进行映射。
尝试_page.Server.MapPath("../files")
。
修改强>
尝试在应用程序根目录之外进行映射时,可能会遇到安全问题。如果是这种情况,你可以这样做:
Server.MapPath("~").Substring(0, Server.MapPath("~").IndexOf(VirtualPathUtility.ToAbsolute("~").Replace("/", "\"))) + "\files"
这看起来相当复杂,但基本上是说“映射我的应用程序,然后从最后删除应用程序根目录并添加'\ files'而不是”。
答案 3 :(得分:0)
尝试
_page.Server.MapPath("files")