经典ASP Server.MapPath无法正常工作

时间:2008-12-10 19:32:34

标签: asp-classic

我正在研究的网站是在经典ASP中完成的,我正尽力做到最好。我已将它抽象为类似Rails的目录结构:

app_name
 - app
   - includes
     - helpers
     - lib
     - partials
  - public
    - stylesheets
    - images
    - javascripts

我创建了一些类似Rails的助手,例如:

Function ImageTag(ByVal imageFileName, ByVal altText)
  path = Server.MapPath(IMAGE_ROOT & imageFileName & ".jpg")
  ImageTag = "<img src=""" & path & """ title=""" & altText & """ alt=""" & altText & """ />"
End Function

因此使用:

<%= ImageTag("my_pic") %>

在配置文件中将“IMAGE_ROOT”定义为“../public/images/”。我正在XP上进行开发,因此该站点被设置为虚拟目录。但是,图像根本不会加载到网页上。它正在显示正确的路径,因为我可以将其复制/粘贴到我的浏览器中并查看图像 - 由于某种原因它不会显示在页面上。我的CSS样式表也是如此 - 路径是正确的,但页面根本没有呈现它。

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

您可能会遇到混合服务器端和Web目录的问题。

当您可能需要 Server.MapPath 时,

C:\InetPub\...\public\images\my_pic.jpg会为您提供 /public/images/my_pic.jpg 。浏览器无法从服务器中获取第一个。

图片必须通过您的域名提供: localhost / public / images / my_pid.jpg


我认为,既然您可以查看图像,那么您正在托管它的同一个盒子上进行开发?如果是这种情况,您可以查看图像,因为它刚刚被浏览器打开为本地文件。其他人都必须使用HTTP。

答案 1 :(得分:0)

- 生成的html会出现问题吗? - 您可能想尝试将IMAGE_ROOT设为绝对路径,例如“/ public / images”而不是相对路径(如果可能)。
- 您还可以查看IIS日志,看看是否有图像和css文件出现404错误。

答案 2 :(得分:0)

如果app_name / app是IIS站点的根目录,那么您必须将app_name / app作为IIS站点中的虚拟目录。由于它只是静态内容,因此您无需执行.asp脚本的权限。

答案 3 :(得分:-1)

在解决这些类型的问题时使用的一个很好的工具是Fiddler。它将直接显示您的Web浏览器和服务器之间的调用和响应。它开箱即用,IE和FireFox支持只是一个配置设置。

我个人使用Fiddler来跟踪图像加载问题,CSS问题,缓存问题,重定向错误,甚至用它来篡改URL变量来尝试破解/黑客攻击我的网站。

Fiddler Website