如何在负载均衡环境中获取DNS名称?

3

我有4个服务器参与负载均衡环境,每个服务器都托管着相同的ASP.NET应用程序。 我想获得DNS名称,而不考虑底层服务器。 以下哪个选项会给出正确答案?

Request.Url.Host
Environment.MachineName
System.Net.Dns.GetHostName() 

感谢您的建议!

1
你想要什么的 DNS 名称?每台机器的?负载均衡器的?客户端的? - Darin Dimitrov
我想我使用了错误的行话。我想要应用程序的FQDN。例如,www.myportal.com。 - Thurein
2个回答

3
您可以尝试使用Request.Url.GetLeftPart(UriPartial.Authority)。例如,如果请求的URL是http://www.contoso.com/index.htm?date=today,则此方法将返回http://www.contoso.com

1
注意:如果您通过服务器名称访问您的站点(例如http://myserver044/mySite/myPage)而不是http://www.myportal.com/mySite/myPage,则仍可能会得到错误的结果。根据您的需求,最好在配置中提供该名称(即拒绝来自指向相同服务器的错误URL的请求)。 - Alexei Levenkov
1
@Darin - 如果一个地址为 www.domain.com 的负载均衡器将请求转发到 A.domain.comB.domain.com,那么获取 Request.Url.GetLeftPart 是否会跳转到 www.domain.com 或当前执行服务器的 URL? - Ramesh
根据http://www.rajeeshcv.com/post/details/40/stay-away-from-request-url,如果您正在进行负载平衡,可以获取执行服务器的URL。 - tomalone

0

首先,它实际上是唯一一个即使稍微相关也是如此。

  • Environment.MachineName可以是任何您想要的内容 - 没有人说必须通过DNS公开。特别是在托管环境中。
  • System.Net.Dns.GetHostName - 将返回机器的主机名,但不知道如何获取。

无论如何,这两个可能都不是用于访问机器的内容。这基本上只是Url.Host部分,因为它通过请求传递。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接