IHttpHandler和相关URL的问题

时间:2010-05-27 18:48:55

标签: asp.net relative-path ihttphandler

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

因此,当一个.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页时,我在处理程序中获得了这个网址:~/page1/~/page2 ..什么是痛苦,因为我必须做一个url = url.SubString(url.LastIndexOf('〜'))来清理它,虽然我觉得没有什么不对,这种行为是完全正常的。

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

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

提前致谢并致以亲切的问候。

1 个答案:

答案 0 :(得分: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地址而不是脚本地址。

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