Request.Url.ToString()返回嵌套的域的机器名(Request.Url.ToStr

2019-10-17 09:14发布

当我在服务器上部署我的应用程序面临这个问题:

Request.Url.ToString(); 返回机器名称,而不是域名。

例如:

而不是返回的http://www.domainName.com/default.aspx返回http://appserver-01/default.aspx

注:一切都在部署之前确定。

Answer 1:

这听起来像它可能是一个或多个以下:

  1. 你的服务器是坐在防火墙和/或正在剥离负载平衡器后面的Host:从请求头。

  2. 检查IIS配置-绑定列表应该包括domainName.comwww.domainName.com ,而不是被空白(默认站点)。

  3. 你在做从内部或外部公司网络的要求? 网络管理员可以具有比外部DNS不同构造的内部DNS。

放弃这一代码ServerVariables.aspx您网站上的某个地方( 临时 :它暴露了服务器的配置信息),它会转储请求头:

<%@ Page Language="C#" Theme="" %>
<html>
<head>
<title>Server Variables</title>
<style>
thead th {border-bottom: 2px solid  #000000; padding: 2px 8px; font-size: 130%; text-align: left;}
tbody td {border-bottom: 1px dotted #999999; padding: 2px 8px;}
</style>
</head>
<body>
<table cellpadding="0" cellspacing="0">
 <thead>
  <tr>
   <th>Server Variable</th>
   <th>Value</th>
  </tr>
 </thead>
 <tbody><%
    foreach (string name in Request.ServerVariables)
    {
%>
  <tr>
   <td><pre><%= name %></pre></td>
   <td><pre><%= Request.ServerVariables[name] %>&nbsp;</pre></td>
  </tr><%
    }
%>
 </tbody>
</table>
</body>
</html>


Answer 2:

那么,与反射挖,在我看来,包含在Request.Url开放的对象肯定是从来自请求头进来的信息构建的。

在光,我的怀疑也许请求进来的是不是你认为他们是。 尝试在看看在进入你的服务器的请求的原始头。 我会用这个数据包嗅探器,我敢打赌,他们反映您所看到的问题。 如果是这样,这个问题是不是你的Web服务器上,它是介于前面那个。

你有任何转接设置的地方,可能会造成这个问题? 如HTTP代理通过某种域控制器的呢? 您是否有交给他们关闭之前按摩请求的任何自定义HttpHandlers的? 如果你这样做,我会在那里寻找。 如果你不认为你做什么,问问你的网络管理(如果有的话),只是为了安全起见。

所有这一切都是在我不知道你的整套了黑暗中刺。 但它是我最好的猜测。

祝好运!



Answer 3:

主机头(这是Request.Url获取域名)是,代理业务从外部改写为机。

在头原始域土地X - 转发,主机。 你应该从那里阅读。

您还可以强制代理保护主机头。 如果您的代理是Apache的mod_proxy的,你可以使用指令:

ProxyPreserveHost在



Answer 4:

我也有同样的问题,我用这个代码,而不是:

"http://" + 
Request.ServerVariables["HTTP_HOST"] + 
Request.ServerVariables["URL"]


Answer 5:

我们也有类似的问题。 在我们的情况下,它是 - 那是什么击中了网站(IISRESET后)的第一个请求。 :如果您使用此URL打HTTP://appserver-01/default.aspx那么它会继续使用它。

尝试以下方法:1。IISRESET 2.请求这个网址: http://www.domainNmae.com/default.aspx 3.查看问题是否得到解决



Answer 6:

你也可以看看无数其他的方式来解析URL或域名。 例如,Request.RawUrl通常返回无论是输入到地址栏,等等。



Answer 7:

什么样的价值回报这个电话?

Request.ServerVariables("SERVER_NAME");
Request.ServerVariables("HTTP_HOST");


文章来源: Request.Url.ToString() returns the machine name nested of the domain