【问题标题】:How to get the original URL after a HttpContext.Current.Server.Execute?如何在 HttpContext.Current.Server.Execute 之后获取原始 URL?
【发布时间】:2012-02-14 20:09:26
【问题描述】:

昨天发了这个问题,但是有点乱,所以我删了再发!

好吧,我用这个链接(我称之为“原始网址”)调用(例如)一个服务器:

http://example.com/page/?IDL=1&IDH=90

现在,在这台服务器上,我进行了一种 url 重写,将请求的 url 更改为:

http://example.com/myhandler404/page:PORT/?ID=34&IDL=1&IDH=90

然后,通过HttpContext.Current.Server.Execute(),我将这个新网址称为。

现在,(我是http://example.com/myhandler404/page:PORT/?ID=34&IDL=1&IDH=90)有可能获得请求的“原始网址”吗?如果不解析/替换,可能会访问某些 Execute 对象的属性?

尝试使用Request.UrlReferrer,但我得到一个空对象?!?!?

【问题讨论】:

    标签: c# asp.net .net url-rewriting


    【解决方案1】:

    尝试使用Server.Transfer 代替Execute,同时使用properties

    或将原始 URL 附加到 QueryString

    http://www.myserver.it/myhandler404/page:PORT/?ID=34&IDL=1&IDH=90&OriginalUrl=http://www.myserver.it/page/?IDL=1&IDH=90

    并像阅读 ID、IDL 和 IDH 一样阅读它。

    【讨论】:

    • 很遗憾,我无法编辑该代码!我相信 Execute 也有对象/属性来获取“OriginalUrl”...
    • 如我所说,我无法在执行区域附近编辑代码。所以我无法编辑执行功能。阅读此主题stackoverflow.com/questions/587510/… @stevemegson 回答“Server.Execute 运行与原始页面具有相同上下文的新页面,Request 的所有属性仍应反映对 Webpage.aspx 的原始请求”但我找不到哪个我应该调用的参数...
    • 好的,我认为 URL 是独立于执行代码生成的。刚刚检查了Request.Url,在我的测试中它包含原始 URL?
    【解决方案2】:

    使用 RawUrl。 一个或多个 Server.Transfer(s) 时始终保持不变:

    System.Web.HttpContext.Current.Request.RawUrl
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-09
      • 2018-09-14
      • 2010-10-21
      相关资源
      最近更新 更多