【问题标题】:Why Request.Url.Authority is returning the internal path and not my domain为什么 Request.Url.Authority 返回内部路径而不是我的域
【发布时间】:2012-02-01 12:59:57
【问题描述】:

我正在处理将于本周上线的应用程序的最后几期。我需要帮助来修改我的代码或向我们的托管商解释他们需要在 IIS/DNS 配置中修复什么以使此代码按预期工作。

代码如下:

public string BaseSiteUrl
{
    get
    {
        var c = this.ControllerContext.RequestContext.HttpContext;
        string baseUrl = c.Request.Url.Scheme + "://" + c.Request.Url.Authority
                       + c.Request.ApplicationPath.TrimEnd('/') + '/';
        return baseUrl;
    }
}

我在我的 Controller 中调用它,以生成一个持久化到数据库的 url。

当我在本地机器上运行时,它运行良好。但是,它在 beta 服务器上运行时不起作用。

测试版的预期结果。在 beta 服务器上,这是一个名为 dr405

的应用程序
  • https://beta.sc-pa.com/dr405/

测试版的实际结果。 (为了安全起见,我将服务器/域名更改为您在 CAPS 中看到的名称)

  • http://SERVERNAME1.GROUP1.SUBGROUP.local/dr405/

【问题讨论】:

    标签: c# asp.net-mvc-3 iis-6


    【解决方案1】:

    由于时间限制,以及需要完成这个项目,我不得不将 url 的主要部分硬编码到应用程序中。在我做出改变之后,我觉得一开始就试图让它变得动态是愚蠢的。我的意思是我们的域名应该多久更换一次?

    【讨论】:

      【解决方案2】:

      如果您使用负载平衡器或类似设备,则可能值得检查服务器变量。在我们的例子中,我们这样做:

      string hostName = Request.Headers["x-forwarded-host"];
      hostName = string.IsNullOrEmpty(hostName) ? Request.Url.Host : hostName;
      

      我刚才问的这个问题可能很有趣:

      Asp.net mvc 301 redirect from www.domain.com to domain.com

      【讨论】:

        【解决方案3】:

        我认为你不需要你写的方法。有一个 UrlHelper 类添加了扩展方法。要获取您网站的基本 URL,您应该使用 Content() 方法,如下所示:

        var baseUrl = Url.Content("~/");
        

        在您的示例中,http://SERVERNAME1.GROUP1.SUBGROUP.local/dr405/ 结果似乎是一个内部主机名。在您的开发机器上,internal 主机与您的面向公众 主机相匹配。您的托管服务提供商不太可能为您修改此设置,尤其是在它是共享托管解决方案的情况下。

        【讨论】:

        • 谢谢,但这根本没有帮助。我需要完全合格的网址。这会生成一个相对的 Url,因此在我的第二个应用程序中,应该指向 beta.sc-pa.com 的 href 标记看起来像这样 href="/dr405//dr405/Wizard/Review/B00593.2660"
        • 您将遇到的麻烦是您需要询问运行主机名代码的服务器。但它(正确地)认为它的主机名是SERVERNAME1.GROUP1.SUBGROUP.local。仅仅因为有一个面向公众的 DNS 条目将流量路由到它,并不意味着它知道这一点。正如我所说,可能有许多个指向SERVERNAME1.GROUP1.SUBGROUP.local的面向公众的DNS条目。
        猜你喜欢
        • 2012-04-20
        • 1970-01-01
        • 2023-03-16
        • 2016-09-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-06
        • 2020-04-22
        相关资源
        最近更新 更多