【问题标题】:ASP.NET Core Azure App Service httpContext.Request.Headers["Host"] ValueASP.NET Core Azure 应用服务 httpContext.Request.Headers["Host"] 值
【发布时间】:2017-06-22 04:17:45
【问题描述】:

今天遇到了奇怪的行为。 我们使用 Azure App Services 托管 asp.net core 1.1 Web 应用程序,并使用路由到特定控制器或区域的子域。 所以在我的 SubdomainConstraint: IRouteConstraint 我使用

HttpContext.Request.Headers["Host"]

获取主机名。以前就这样返回的smth

mywebsite.com or subdomain.mywebsite.com 

从今天(或者可能是昨天)开始,它开始返回我的应用服务名称而不是主机名。在本地主机上一切正常。 通过枚举

Context.Request.Headers

在我的一个视图中,我在本地主机上给了我:

Accept : 
text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding : gzip, deflate, sdch, br
Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,ca;q=0.2
Cookie : .AspNetCore.Antiforgery....
Host : localhost:37202
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Upgrade-Insecure-Requests : 1

在 Azure 应用服务中:

Connection : Keep-Alive
Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding : gzip, deflate, sdch
Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,ca;q=0.2
Cookie : AspNetCore.Antiforgery....
Host : mydeploymentname:80
Max-Forwards : 10
User-Agent : Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Upgrade-Insecure-Requests : 1
X-LiveUpgrade : 1
X-WAWS-Unencoded-URL : /
X-Original-URL : /
X-ARR-LOG-ID : 9c76e796-84a8-4335-919c-9ca4rb745f4fefdfde
DISGUISED-HOST : mywebsite.com
X-SITE-DEPLOYMENT-ID : mydeploymentname
WAS-DEFAULT-HOSTNAME : mydeploymentname.azurewebsites.net
X-Forwarded-For : IP:56548
MS-ASPNETCORE-TOKEN : a97b93ba-6106-4301-87b2-8af9a929d7dc
X-Original-For : 127.0.0.1:55602
X-Original-Proto : http

我可以得到我需要的东西

Headers["DISGUISED-HOST"]

但是在重定向到登录页面时出现问题,它使用我的部署名称重定向到错误的 URL。

想知道我是否可以在任何地方搞砸。但是我们在几天前进行了最后一次部署,之后它运行良好。

【问题讨论】:

  • 您能直接或indirectly 分享您的网络应用名称吗?这将有助于我们进行调查。谢谢!
  • 我有同样的问题,微软正在调查。
  • 为我解决了。

标签: asp.net azure asp.net-core azure-web-app-service


【解决方案1】:

这是由部署到 Azure 应用服务中的少量应用的 AspNetCoreModule 中的回归引起的。这个问题正在调查中。状态请关注this thread

在部署修复程序之前,您可以使用以下解决方法:在您的 Configure 方法中(通常在 startup.cs 中),添加以下内容:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
    {
        app.Use((ctx, next) =>
        {
            string disguisedHost = ctx.Request.Headers["DISGUISED-HOST"];
            if (!String.IsNullOrWhiteSpace(disguisedHost))
            {
                ctx.Request.Host = new Microsoft.AspNetCore.Http.HostString(disguisedHost);
            }
            return next();
        });

        // Rest of your code here...

    }

【讨论】:

  • 关于这个问题什么时候得到修复的任何更新?这影响了我们部署到美国西部的一些应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-14
  • 1970-01-01
  • 2018-05-19
  • 2018-10-20
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多