在经典的ASP,的使用Server.Mappath()不始终正确在 Application_OnStart 事件内工作的的global.asa 即可。我在ASP页的 “\ testfolder \ TEST.ASP”一个虚拟根内,我有位于 “\ XSL \ transform.xsl” XSLT文件即可。我的虚拟根位于即可。 “C:\的Inetpub \ wwwroot的\ testapp \”

我使用在MapPath 的ASP页面内得到完整路径XSLT文件。该呼叫是:

sXslPath = Server.MapPath("xsl\transform.xsl")

某些倍的MapPath返回的 “C:\的Inetpub \ wwwroot的\ testapp \ XSL \ transform.xsl”如预期,其他时候,它错误地返回的“C:\的Inetpub \ wwwroot的\ testapp \ testfolder \ XSL \ transform.xsl“即可。不正确的路径显然会导致严重的问题。

有帮助吗?

解决方案

我在这里回答我的问题:

,会出现此问题,因为在被调用时的 Application_OnStart ,<强>的MapPath 错误地包含引起该应用程序启动时的页的情况下。如果在应用程序还没有开始运行第一个ASP页面是不是在虚拟根的根和在MapPath 迷糊,并添加路径称为ASP页面的路径返回

因此,例如,即使启动应用程序是在页面的 “C:\的Inetpub \ wwwroot的\ testapp \ folder1中\文件夹2 \ TEST.ASP”,然后在MapPath会错误地添加的“\ folder1中\文件夹2 “入路径的中途并返回的” C:\的Inetpub \ wwwroot的\ testapp \ folder1中\文件夹2 \ XSL \ transform.xsl“

如果您的网站只有在根文件夹有文件或不使用在MapPath 的Global.asa ,然后你就不会注意到这个小怪胎。我怀疑有很多ASP经典站点那里的未能正确有时因为这个启动,但它们的主人只是做一个快速IISRESET,不知道什么很了问题。

这样做的结果是,你不能可靠地使用在MapPath 的Global.asa 如果你有一个网站,有ASP文件不仅仅是根文件夹之外的任何地方

如果它是一个一次性的网站,那么最简单的解决办法是只硬编码您使用任何路径的的global.asa

如果你卖的产品基于ASP经典其他人则硬编码的路径是不是一种选择。你要么必须移动的所有使用的在MapPath 从应用程序启动或通过写路径到您的ASP文件作为安装程序的一部分处理这一问题。

其他提示

替代地使用 sXslPath =使用Server.Mappath( “\ XSL \ transform.xsl”)

然后将从根目录映射路径

当然,如果你在IIS上的操作系统,是不是服务器开发,根将是默认的网站,你就必须记得改变部署...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top