求救:Server.MapPath("../" )出错

qiuyoyo 2008-07-12 11:24:21
我想获得解决方案的上一级目录,使用Server.MapPath("../" )出错,
只能用Server.MapPath("./" )获得当前解决方案的目录

请问怎么解决啊?想得到 解决方案的上一级目录
...全文
435 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
Magic_YJL 2008-07-13
  • 打赏
  • 举报
回复
实在不行,就字符串截取吧
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 knifesky 的回复:]
我想问,你获得E:想干啥?你是不是想对E:\path\里的东西进行操作啊,我感觉这不太现实,如果随便就这么操作,那何言安全性?
[/Quote]

呵呵,是得,我是这想的,因为我有个“上传文件”想跟website同一目录,所以想获得website的父目录,然后对那个文件夹进行操作!
Magic_YJL 2008-07-13
  • 打赏
  • 举报
回复
你是要获取根目录吗?还是二级目录
跟目录用“Server.MapPath(".")”
knifesky 2008-07-13
  • 打赏
  • 举报
回复
我想问,你获得E:想干啥?你是不是想对E:\path\里的东西进行操作啊,我感觉这不太现实,如果随便就这么操作,那何言安全性?
zq535228 2008-07-13
  • 打赏
  • 举报
回复
一个网站的结构
/
/site/

无论你的请求发生在什么路径下,用Server.MapPath("~/"),获得的是/的物理路径

当你的请求发生再 /site/里 ,用Server.MapPath("../"),获得的是/的物理路径

当你的请求发生再 /site/里 ,用Server.MapPath("./"),获得的是/site/的物理路径

你可以转换成物理路径之后 用Replace去掉最后的目录,就成了上一级了
walkghost 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 y3001181027 的回复:]
是服务器的问题,在IIS中,服务商没有开启父路径造成凡是用../路径的用法均会出错,如 <!--#include file="../inc/top.asp"-->
一般国内正规服务商不会出这种错,要么是自己服务器,要么是国外服务器有碰到过这情况
[/Quote]
正解!
mengxj85 2008-07-13
  • 打赏
  • 举报
回复
返回上一级目录应该是../啊,至于为什么用不了就不清楚了
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 toxxj 的回复:]
Server.MapPath是针对你的网站目录来的, E:\ 已不存在Server.MapPath的范围内了
[/Quote]

那请问怎么解决这个问题呢?
niitnanfeng 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 toxxj 的回复:]
Server.MapPath是针对你的网站目录来的, E:\ 已不存在Server.MapPath的范围内了
[/Quote]
他的网站可能就建立在E盘,楼主最好写清楚,就写了个Server.MapPath("../")?
toxxj 2008-07-13
  • 打赏
  • 举报
回复
Server.MapPath是针对你的网站目录来的, E:\ 已不存在Server.MapPath的范围内了
jzywh 2008-07-13
  • 打赏
  • 举报
回复

Server.MapPath("~/" )
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
不是,我刚才看了一下,父目录已经开启了
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 y3001181027 的回复:]
是服务器的问题,在IIS中,服务商没有开启父路径造成凡是用../路径的用法均会出错,如 <!--#include file="../inc/top.asp"-->
一般国内正规服务商不会出这种错,要么是自己服务器,要么是国外服务器有碰到过这情况
[/Quote]

对,有可能~
请问怎么开启IIS中的父目录呢?
cat_hsfz 2008-07-13
  • 打赏
  • 举报
回复
首先,IIS要启用父目录访问,否则肯定访问不了。其次,当前ASP.NET运行的帐号要有访问上一级目录的权限。
y3001181027 2008-07-13
  • 打赏
  • 举报
回复
可以不用相对路径,改用绝对路径。
y3001181027 2008-07-13
  • 打赏
  • 举报
回复
是服务器的问题,在IIS中,服务商没有开启父路径造成凡是用../路径的用法均会出错,如<!--#include file="../inc/top.asp"-->
一般国内正规服务商不会出这种错,要么是自己服务器,要么是国外服务器有碰到过这情况
seesea125 2008-07-13
  • 打赏
  • 举报
回复
Server.MapPath是相对IIS的目录来说的,你的E:\A??????站点跟目录是e:\盘吗?如果不是那肯定出错了。。。
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 Magic_YJL 的回复:]
你是要获取根目录吗?还是二级目录
跟目录用“Server.MapPath(".")”
[/Quote]

应该是根目录的上一级目录
比如我的解决方案是在E:\website
我无论用“Server.MapPath(".")”,还是Server.MapPath("~/") ,还是Server.MapPath("./" )都只能获得“ E:\websiste”
我的目的是获得“E:”,可是总出错,查了一下资料说可以用Server.MapPath("../" ),为什么我就不行呢?
togezor 2008-07-13
  • 打赏
  • 举报
回复
mappath()方法应该不会获取上级目录的
qiuyoyo 2008-07-13
  • 打赏
  • 举报
回复
谢谢各位,我说过,我查看过iis配置,父目录已经开启了。

现在是这么个情况
我的解决方案是E:\website
现在有个文件夹,假设是A,在website里面,也就是说物理地址是E:\website\A
我想把文件夹A移出到E:\下,也就是E:\A这个样子
我在访问文件夹A时问题出来了,我不能用Server.MapPath("../" )获得website的父目录E:\

各位高人,最好不要用绝对地址,免得移植麻烦。
能不能帮我解决一下呢??
加载更多回复(6)

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧