Request.Url.ToString () возвращает имя машины, вложенной в домен - PullRequest
1 голос
/ 26 августа 2009

Когда я развернул свое приложение на сервере, я столкнулся с этой проблемой:

Request.Url.ToString(); возвращает имя машины вместо имени домена.

Например:

Вместо возврата http://www.domainName.com/default.aspx возвращается http://appserver-01/default.aspx.

Примечание: Все было хорошо до развертывания.

Ответы [ 7 ]

5 голосов
/ 29 августа 2009

Похоже, это может быть один или несколько из следующих:

  1. ваш сервер находится за брандмауэром и / или балансировщиком нагрузки, которые удаляют заголовок Host: из запроса.

  2. Проверьте конфигурацию IIS - список привязок должен содержать как domainName.com, так и www.domainName.com вместо того, чтобы быть пустым (сайт по умолчанию).

  3. Вы делаете запросы внутри или вне сети вашей компании? Администратор сети мог настроить внутренний DNS иначе, чем внешний DNS.

Удалите этот код как ServerVariables.aspx где-нибудь на вашем сайте ( временно : он предоставляет информацию о конфигурации сервера) и сбросит заголовки запроса:

<code><%@ 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 %>
<%= Request.ServerVariables[name] %>&nbsp;
<% } %>
1 голос
/ 07 февраля 2011

У меня та же проблема, я использовал этот код вместо:

"http://" + 
Request.ServerVariables["HTTP_HOST"] + 
Request.ServerVariables["URL"]
1 голос
/ 03 сентября 2009

Заголовок хоста (где Request.Url получает имя домена) переписывается на машине, которая передает трафик извне.

Оригинальный домен попадает в заголовок X-Forwarded-Host. Вы должны прочитать это оттуда.

Вы также можете заставить прокси сохранить заголовок хоста. Если ваш прокси - apache mod_proxy, вы можете использовать директиву:

ProxyPreserveHost On

1 голос
/ 29 августа 2009

Что ж, копаясь в Reflector, мне кажется, что объект Uri, содержащийся в Request.Url, определенно создан из информации, поступающей из заголовков запроса.

В свете этого я подозреваю, что, возможно, поступающие запросы не соответствуют вашим ожиданиям. Попробуйте взглянуть на необработанные заголовки в запросах, поступающих на ваш сервер. Я бы использовал для этого анализатор пакетов, держу пари, что они отражают проблему, которую вы видите. Если так, то проблема не в вашем веб-сервере, а где-то перед этим.

У вас есть настроенная пересылка, которая может быть причиной этой проблемы? Как переадресация http, выполняемая каким-то контроллером домена? Есть ли у вас какие-либо пользовательские HttpHandlers, которые массируют запрос перед его передачей? Если вы это сделаете, я бы посмотрел там. Если вы так не думаете, попросите своего сетевого администратора (если он у вас есть) просто быть в безопасности.

Все это - удар в темноте, так как я не знаю всей твоей установки. Но это мое лучшее предположение.

Удачи!

0 голосов
/ 03 сентября 2009

Какое значение возвращает этот вызов?

Request.ServerVariables("SERVER_NAME");
Request.ServerVariables("HTTP_HOST");
0 голосов
/ 26 августа 2009

Вы также можете найти множество других способов разрешения URL или домена. Например, Request.RawUrl обычно возвращает то, что было введено в адресную строку и т. Д.

0 голосов
/ 26 августа 2009

У нас была похожая проблема. В нашем случае это было - что было самым первым запросом, который попал на сайт (после IISReset). Если вы нажмете на него с этим URL: http://appserver -01 / default.aspx , то он продолжит использовать его.

Попробуйте следующее: 1. IISReset 2. Запросите этот URL: http://www.domainNmae.com/default.aspx 3. посмотреть, решена ли проблема

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...