【问题标题】:URL Routing and Relative Links BehaviorURL 路由和相对链接行为
【发布时间】:2011-05-23 19:04:46
【问题描述】:

我正在建立一个存储大量文章的网站。每篇文章的 URL 以 /Articles/{categoryid}/{articleslug} 的形式实现 URL 路由。

有些文章有指向图形文件的链接。该链接未指定完整路径,因此我将图形文件存储在 /Articles/{categoryid}/{articleslug}/graphic.jpg。

这在我的桌面上运行良好。但是当我将网站部署到共享主机帐户时,行为就不同了。

现在,只有当我将图形文件存储在 /Articles/{categoryid}/graphic.jpg 时,该链接才有效。换句话说,在我的桌面上,{articleslug} 被假定为一个目录,但在网络上它被假定为当前页面的名称。

有谁知道为什么行为会发生变化?你可以在http://www.blackbeltcoder.com/Articles/asp/creating-website-thumbnails-in-asp-net 看到一个例子。顶部附近的屏幕截图和下载链接都是损坏的链接。

【问题讨论】:

  • 我刚刚注意到,如果我在上面的 URL 中附加一个“/”,它就会被假定为一个目录名称,并且链接可以正常工作。但我仍然不明白为什么我的桌面不需要这个,或者我是否可以控制它。
  • 除了我在对 joelt 的评论中描述的开发服务器与 IIS 之外,我倾向于只在我的页面中指定一个 标记。这样,我应该能够精确地控制相对链接的含义。

标签: asp.net url-routing


【解决方案1】:

如果不了解更多信息,最可能的原因似乎是 IIS 的不同版本或配置。网络主机的行为具有各种意义;您桌面的行为让我感到困惑。您的桌面是否正在执行从 /Articles/{categoryid}/{articleslug} 到 /Articles/{categoryid}/{articleslug}/ 的重定向?能否使用 Fiddler 等查看浏览器对 GET 请求的格式是否不同?

【讨论】:

  • 其他人为我指出开发服务器通过 ASP.NET 处理程序处理所有请求,但 IIS 没有。他指出,如果 IIS 上的 URL 以 .aspx 结尾,那就没问题了。如果它看起来像 IIS 的目录 URL,则默认情况下它不会通过 ASP.NET 处理程序发送。这似乎是我从 Visual Studio 运行不同行为的原因。
  • 为了更具体地回答您的问题,我没有做任何重定向。我正在使用 ASP.NET 4.0 URL 路由。而且我想我已经安装了 Fiddler,但不知道我在寻找什么。我是开发人员,但不是管理员/IIS 人员。尽管继续努力,这个问题仍未解决。
  • 我认为以 .aspx 结尾的 URL 并不重要。如果这是问题所在,您的网站将根本无法在 Web 服务器上运行。较新版本的 IIS 没有这个问题。我刚刚在我的机器上运行了一个测试,它具有使用 ASP.NET MVC 1 部署的路由库版本,它的行为类似于您的 Web 服务器。您可以尝试在您的 bin 目录中部署您的路由 dll 版本并引用它,而不是 GAC,然后看看会发生什么。
  • 我明白你的意思,如果请求根本没有映射到 ASP.NET,那么该站点将根本无法工作。不知何故,浏览器 IIS 正在确定 URL 是否代表路径或文件名,我什至不知道如何做出这个决定。
【解决方案2】:

感谢您的意见。这里可能没有足够的信息供任何人解决此问题,除非他们已经明确看到了该问题。

无论如何,我自己解决了这个问题,我在Relative Links with Extension-less URLs 发布的一个相关问题中描述了解决方案。

谢谢。

【讨论】:

    猜你喜欢
    • 2010-10-06
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    • 2018-01-03
    • 1970-01-01
    • 1970-01-01
    • 2019-07-27
    • 2019-10-27
    相关资源
    最近更新 更多