首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server.MapPath()奇异问题

Server.MapPath()奇异问题
EN

Stack Overflow用户
提问于 2014-05-02 18:14:07
回答 1查看 1.2K关注 0票数 1

是否有人观察或处理过以下问题。我有两个web服务器(Dev、QA、暂存)都在运行Windows 2003,IIS 6。最近应用了一个使用以下代码行的更新:

代码语言:javascript
复制
sLogPath = Server.MapPath("../Templates/" & strFileName)        
set fs = Server.CreateObject("Scripting.FileSystemObject")       
If fs.FileExists(sLogPath) Then

这在所有dev系统上都很好,但是一旦我们将它移到QA上,我就会收到一个错误:

代码语言:javascript
复制
The '..' characters are not allowed in the Path parameter for the MapPath method.
Line number xxx 

行号在这一行。

代码语言:javascript
复制
sLogPath = Server.MapPath("../Templates/" & strFileName)

我尝试用Server.MapPath("../Templates/")替换Server.MapPath("/Templates/"),但这给了我IIS服务的根(C:\InetPub\wwwroot),而不是我的站点的根。如果我尝试执行Server.MapPath(strFileName),我将再次获得文件的错误路径,因为站点不在IIS中,而是在驱动器的其他位置。

有什么办法解决这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-02 20:00:08

问题是在ASP应用程序配置中还没有启用Enable parent paths

没有它,就不允许在ASP函数中使用..目录遍历。

有关更多信息,请参见在IIS 6.0中,默认情况下禁用启用父路径

边注上的 我倾向于通过在IIS中将网站配置为单独的网站实例而不是使用%SystemDrive%\inetpub\wwwroot ( Default Website实例所在的地方)来避免父路径的需求。这样做意味着像Server.MapPath("/")这样的代码将是有效的,并指向站点的根目录,而不是Default Web Site实例根。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23434451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档