代码之家  ›  专栏  ›  技术社区  ›  vtortola

IHttpHandler和相关URL出现问题

  •  0
  • vtortola  · 技术社区  · 16 年前

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

    所以,当一个对.css文件的请求到达时,我必须执行以下操作 context.Response.WriteFile(Server.MapPath(url))

    我的主要问题是,当我把相对网址锚;例如,我的主页上有这样一个链接 <a href="page1">Go to Page 1</a> ,在第一页我有另一个链接 <a href="page2">Go to Page 2</a> . 第1页和第2页应该在同一层( http://host/page1 和 http://host/page2 ,但当我单击“转到第2页”时,处理程序中出现了以下url: ~/page1/~/page2 ... 什么是痛苦,因为我必须做一个url=url.SubString(url.LastIndexOf('~'))来清理它,尽管我觉得没有什么不对,而且这种行为是完全正常的。

    现在,我能应付,但我想将来这会让我头疼。我试着使用的信息设置所有链接的绝对网址 context.Request.Url ,但这也是一种痛苦:D,所以我想知道是否有更好的方法来做这类事情。

    不要犹豫,给我很明显的答复,因为我是一个新的网络开发,可能我跳过了一些基本的网址,Http等。

    1 回复  |  直到 16 年前
        1
  •  2
  •   hultqvist    15 年前

    首先,我要看看交付给浏览器的输出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"

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

    推荐文章