0

我开发了一个IHttpHandler类并将其配置为verb="*" path="*",因此我正在使用它处理所有请求,以尝试为动态生成 html 的测试网站创建我自己的 REST 实现。

因此,当对 .css 文件的请求到达时,我必须执行类似的操作context.Response.WriteFile(Server.MapPath(url))……对于图片等,我必须自己响应所有内容。

我的主要问题是当我将相对 URL 放入锚点时;例如,我有一个带有这样链接的主页<a href="page1">Go to Page 1</a>,而在第 1 页我有另一个链接<a href="page2">Go to Page 2</a>。第 1 页和第 2 页应该处于同一级别 (http://host/page1http://host/page2,但是当我单击转到第 2 页时,我在处理程序中得到了这个 url:~/page1/~/page2... 什么是痛苦,因为我必须做一个 url = url .SubString(url.LastIndexOf('~')) 用于清理它,虽然我觉得没有错,这种行为是完全正常的。

现在,我可以应付它,但我认为将来这会让我有些头疼。我尝试使用 的信息设置所有带有绝对 URL 的链接context.Request.Url,但这也很痛苦 :D,所以我想知道是否有更好的方法来做这些事情。

不要犹豫,给我非常明显的回应,因为我在 Web 开发方面还很新,可能我正在跳过一些关于 URL、Http 等的基本知识。

在此先感谢和亲切的问候。

4

1 回答 1

2

首先,我将查看传递给浏览器的输出 HTML,特别是您所描述的链接。

您说链接是<a href="page2">Go to Page 2</a>,但根据您的结果,我猜它更像<a href="~/page2">Go to Page 2</a>. 您可以通过在处理程序中放置一个刹车点来确认这一点,当它使用“~/page1/~/page2”触发时,在浏览器的地址栏中查看它应该显示类似“http://www.example.com/第 1 页/~/第 2 页”

您应该首先查看生成链接的代码。如果它是从某种函数调用生成的,请确保您获取的是 Web 地址而不是脚本地址。

在任何情况下,这些在第一级页面之间切换的链接都应该以“/”开头,表示它们的位置是相对于您网站的根目录而不是相对于当前显示的页面。

于 2010-12-18T22:55:42.780 回答