2010-05-27 52 views
0

我开发了一个IHttpHandler类,我将它配置为verb="*" path="*",所以我正在处理所有的请求,试图为测试网站创建我自己的REST实现,动态生成html。IHttpHandler问题和相对URL

因此,当一个.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('〜'))清理它,虽然我觉得没有什么不对,这种行为是完全正常的。在将来这会给我带来一些头痛的问题,我试图用context.Request.Url的信息设置绝对URL的所有链接,但这也是一个痛苦:D,所以我想知道是否有更好的做这些事情的方式

不要犹豫,给我很明显的责任因为我在Web开发方面很新颖,可能我会跳过一些关于URL,Http等的基本知识。

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

+0

url的变量是否与context.Request.Url相同? – Sijin 2010-05-27 19:15:37

+0

url变量用来包含context.Request.AbsoluteApplicationPath(我不记得那个属性的名字) – vtortola 2010-05-27 19:19:23

回答

2

首先,我将看看输出到浏览器的HTML输出,特别是您描述的链接。

你说链接是<a href="page2">Go to Page 2</a>但根据你的结果我猜想它更像<a href="~/page2">Go to Page 2</a>。 您可以通过在处理程序中放置一个制动点,并在浏览器的地址栏中使用“〜/ page1 /〜/ page2”进行触发时确认这一点,并且应该像“http://www.example.com”/page1 /〜/ page2“

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

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