【问题标题】:Why doesn't request.rawurl include the http://localhost part?为什么 request.rawurl 不包含 http://localhost 部分?
【发布时间】:2010-01-26 15:48:36
【问题描述】:

当我调用 Request.RawUrl 时,我没有得到域名(至少在开发中)。

例如,如果我的本地网址是:

http://localhost:2343/some/thing

对 Request.RawUrl 的调用正在回馈我:

/一些/东西

我记得它会返回所有内容,这是本地开发人员的行为吗?

更新

我也在使用 Url Re-Writing,所以像 Request.Url.AbsoluteUri 这样的东西会返回内部 url,而不是我需要获取的重写后的 url。

那么javascript是唯一的方法吗?

或者我可以使用 Request.RawUrl 作为 url 部分,然后以某种方式获取域名部分? (有时它也有一个端口......)

【问题讨论】:

    标签: asp.net httprequest


    【解决方案1】:

    根据documentation

    原始 URL 定义为 URL 中域信息之后的部分。在 URL 字符串 http://www.contoso.com/articles/recent.aspx 中,原始 URL 是 /articles/recent.aspx。原始 URL 包括查询字符串(如果存在)。

    您可以使用Request.Url.AbsoluteUri 获取全部内容。

    【讨论】:

    • 问题是我正在使用 url 重写,所以也许唯一的方法是通过 javascript 获取 url?
    【解决方案2】:

    看看你通过Request.Url.得到了什么

    【讨论】:

      【解决方案3】:

      RawUrl 仅返回您的域之后的 URL。

      See this page for an example of RawURL.

      【讨论】:

        【解决方案4】:

        来自Request.RawUrl上的 MSDN 文档:

        The raw URL is defined as the part of the URL following the domain information.

        您正在寻找Request.Url

        【讨论】:

          【解决方案5】:

          这种行为是设计使然。 RawUrl 只返回 url 跟在域名后面的部分,加上任何查询字符串参数。

          如果您想要完整的网址,请使用Request.Url

          【讨论】:

            【解决方案6】:

            要使重写的 URL 工作,您可以结合以下内容:

            var result = Request.Url.GetLeftPart(UriPartial.Authority) + Request.RawUrl;
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-01-20
              • 1970-01-01
              • 2018-04-28
              • 2012-09-24
              • 2015-04-25
              • 1970-01-01
              相关资源
              最近更新 更多