Asp.net Request.Url.ToString()返回嵌套域的计算机名

Asp.net Request.Url.ToString()返回嵌套域的计算机名,asp.net,deployment,Asp.net,Deployment,在服务器上部署应用程序时,我遇到了以下问题: Request.Url.ToString;返回计算机名而不是域名 例如: 而不是返回http://www.domainName.com/default.aspx 它回来了http://appserver-01/default.aspx. 注: 部署前一切正常。我们遇到了类似的问题。在我们的例子中,在IISReset之后,第一个访问站点的请求是什么。如果你用这个URL点击它:那么它将继续使用它 请尝试以下操作: 1.IISReset 2.请求此URL:

在服务器上部署应用程序时,我遇到了以下问题:

Request.Url.ToString;返回计算机名而不是域名

例如:

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

注:
部署前一切正常。

我们遇到了类似的问题。在我们的例子中,在IISReset之后,第一个访问站点的请求是什么。如果你用这个URL点击它:那么它将继续使用它

请尝试以下操作: 1.IISReset 2.请求此URL:
3.看看问题是否得到解决

我们也遇到过类似的问题。在我们的例子中,在IISReset之后,第一个访问站点的请求是什么。如果你用这个URL点击它:那么它将继续使用它

请尝试以下操作: 1.IISReset 2.请求此URL:
3.查看问题是否已解决

您还可以查看无数其他解决url或域的方法。例如,Request.RawUrl通常会返回在地址栏中键入的内容,等等。

您还可以研究无数其他方法来解析url或域。例如,Request.RawUrl通常会返回在地址栏中键入的内容,等等。

好吧,在我看来,Request.Url中包含的Uri对象肯定是根据请求头中的信息构建的

有鉴于此,我怀疑进来的请求可能不是你想象的那样。尝试查看进入服务器的请求中的原始头。我会使用数据包嗅探器,我敢打赌它们反映了你看到的问题。如果是这样,问题不在web服务器上,而是在前面的某个地方

您是否在可能导致此问题的地方设置了任何转发?比如http转发是由某种域控制器完成的?您是否有任何定制的httphandler在发送请求之前对其进行处理?如果你愿意,我会去那里看看。如果你不认为你有,问你的网络管理员,如果你有一个只是为了安全

这一切都是暗箭伤人,因为我不知道你的整个计划。但这是我最好的猜测


祝你好运

好吧,深入反射器,在我看来,Request.Url中包含的Uri对象肯定是根据请求头中的信息构建的

有鉴于此,我怀疑进来的请求可能不是你想象的那样。尝试查看进入服务器的请求中的原始头。我会使用数据包嗅探器,我敢打赌它们反映了你看到的问题。如果是这样,问题不在web服务器上,而是在前面的某个地方

您是否在可能导致此问题的地方设置了任何转发?比如http转发是由某种域控制器完成的?您是否有任何定制的httphandler在发送请求之前对其进行处理?如果你愿意,我会去那里看看。如果你不认为你有,问你的网络管理员,如果你有一个只是为了安全

这一切都是暗箭伤人,因为我不知道你的整个计划。但这是我最好的猜测


祝你好运

听起来可能是以下一项或多项:

您的服务器位于防火墙和/或负载平衡器后面,这些防火墙和/或负载平衡器正在从请求中剥离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] %>&nbsp;</pre></td>
  </tr><%
    }
%>
 </tbody>
</table>
</body>
</html>

听起来可能是以下一项或多项:

您的服务器位于防火墙和/或负载平衡器后面,这些防火墙和/或负载平衡器正在从请求中剥离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] %>&nbsp;</pre></td>
  </tr><%
    }
%>
 </tbody>
</table>
</body>
</html>

返回此调用的值是什么


返回此调用的值是什么


主机头,它是Request.Url获取域名的地方,由代理来自外部的流量的机器重写

原始域位于标头X-Forwarded-Host中。你应该从那里读

您还可以强制代理保留主机头。如果您的代理是apachemod_代理,那么可以使用d 指示:


主机头上的ProxyPreserveHost,这是Request.Url获取域名的位置。该域名由代理来自外部的流量的计算机重写

原始域位于标头X-Forwarded-Host中。你应该从那里读

您还可以强制代理保留主机头。如果您的代理是apache mod_代理,则可以使用指令:


上的ProxyPreserveHost存在相同的问题,我使用了以下代码:


我也有同样的问题,我使用了以下代码:


您在什么环境下使用它?谁创建了URL?它的意思是Request.URL.ToString;正如罗德里戈指出的,你应该在你的问题中将嵌套的单词改为-这会使它更清楚!您在什么环境下使用它?谁创建了URL?它的意思是Request.URL.ToString;正如罗德里戈指出的,你应该在你的问题中将嵌套的单词改为-这会使它更清楚!我可以用任何解决方法解决问题,但在部署之前它是有效的!!MSDN声称RawUrl不包含域名。原始URL被定义为域信息后面的URL的一部分。在URL字符串中,原始URL为/articles/recent.aspx。原始URL包含查询字符串(如果存在)。我可以通过任何解决方法解决此问题,但它在部署之前工作!!MSDN声称RawUrl不包含域名。原始URL被定义为域信息后面的URL的一部分。在URL字符串中,原始URL为/articles/recent.aspx。原始URL包括查询字符串(如果存在)。
"http://" + 
Request.ServerVariables["HTTP_HOST"] + 
Request.ServerVariables["URL"]