当我在服务器上部署我的应用程序面临这个问题:
Request.Url.ToString();
返回机器名称,而不是域名。
例如:
而不是返回的http://www.domainName.com/default.aspx
返回http://appserver-01/default.aspx
。
注:一切都在部署之前确定。
当我在服务器上部署我的应用程序面临这个问题:
Request.Url.ToString();
返回机器名称,而不是域名。
例如:
而不是返回的http://www.domainName.com/default.aspx
返回http://appserver-01/default.aspx
。
注:一切都在部署之前确定。
这听起来像它可能是一个或多个以下:
你的服务器是坐在防火墙和/或正在剥离负载平衡器后面的Host:
从请求头。
检查IIS配置-绑定列表应该包括domainName.com
和www.domainName.com
,而不是被空白(默认站点)。
你在做从内部或外部公司网络的要求? 网络管理员可以具有比外部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] %> </pre></td>
</tr><%
}
%>
</tbody>
</table>
</body>
</html>
那么,与反射挖,在我看来,包含在Request.Url开放的对象肯定是从来自请求头进来的信息构建的。
在光,我的怀疑也许请求进来的是不是你认为他们是。 尝试在看看在进入你的服务器的请求的原始头。 我会用这个数据包嗅探器,我敢打赌,他们反映您所看到的问题。 如果是这样,这个问题是不是你的Web服务器上,它是介于前面那个。
你有任何转接设置的地方,可能会造成这个问题? 如HTTP代理通过某种域控制器的呢? 您是否有交给他们关闭之前按摩请求的任何自定义HttpHandlers的? 如果你这样做,我会在那里寻找。 如果你不认为你做什么,问问你的网络管理(如果有的话),只是为了安全起见。
所有这一切都是在我不知道你的整套了黑暗中刺。 但它是我最好的猜测。
祝好运!
主机头(这是Request.Url获取域名)是,代理业务从外部改写为机。
在头原始域土地X - 转发,主机。 你应该从那里阅读。
您还可以强制代理保护主机头。 如果您的代理是Apache的mod_proxy的,你可以使用指令:
ProxyPreserveHost在
我也有同样的问题,我用这个代码,而不是:
"http://" +
Request.ServerVariables["HTTP_HOST"] +
Request.ServerVariables["URL"]
我们也有类似的问题。 在我们的情况下,它是 - 那是什么击中了网站(IISRESET后)的第一个请求。 :如果您使用此URL打HTTP://appserver-01/default.aspx那么它会继续使用它。
尝试以下方法:1。IISRESET 2.请求这个网址: http://www.domainNmae.com/default.aspx 3.查看问题是否得到解决
你也可以看看无数其他的方式来解析URL或域名。 例如,Request.RawUrl通常返回无论是输入到地址栏,等等。
什么样的价值回报这个电话?
Request.ServerVariables("SERVER_NAME");
Request.ServerVariables("HTTP_HOST");