【问题标题】:Classic ASP Server.MapPath not working properly经典 ASP Server.MapPath 无法正常工作
【发布时间】:2008-12-10 19:32:33
【问题描述】:

我正在开发的网站是在 Classic ASP 中完成的,我正在努力做到最好。我已将其抽象为类似 Rails 的目录结构:

app_name - 应用程序 - 包括 - 帮手 - 库 - 部分 - 上市 - 样式表 - 图片 - 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 样式表也是如此 - 路径是正确的,但页面根本没有呈现它。

有什么建议吗?

【问题讨论】:

  • 为什么要将相对路径映射到物理路径,您肯定只使用IMAGE_ROOT &amp; imageFileName &amp; ".jpg" 而不使用Server.MapPath()

标签: asp-classic


【解决方案1】:

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

当您可能需要 /public/images/my_pic.jpg 时,

Server.MapPath 会给您 C:\InetPub\...\public\images\my_pic.jpg。浏览器无法从您的服务器获取第一个。

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


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

【讨论】:

    【解决方案2】:

    -会不会是生成的html有问题?
    - 您可能想尝试使 IMAGE_ROOT 成为像“/public/images”这样的绝对路径,而不是相对路径(如果可能)。
    - 你也可以查看 IIS 日志,看看你是否收到图像和 css 文件的 404 错误。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        在解决这些类型的问题时可以使用的出色工具是 Fiddler。它将直接显示您的网络浏览器和服务器之间的调用和响应。它在 IE 和 FireFox 支持下开箱即用,只需进行配置设置即可。

        我曾亲自使用 Fiddler 来追踪图像加载问题、CSS 问题、缓存问题、重定向错误,甚至用它来篡改 URL 变量以尝试破坏/入侵我的网站。

        Fiddler Website

        【讨论】:

          猜你喜欢
          • 2010-10-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-12-21
          • 1970-01-01
          • 2011-10-20
          相关资源
          最近更新 更多