Request.ServerVariables [ "SERVER_NAME" ] всегда является локальным

Я разрабатываю приложение ASP.NET 3.5 с Visual Studio 2008.

Моя страница по умолчанию имеет код переадресации в методе Page_Load:

    protected void Page_Load(object sender, EventArgs e)
    {

        string sname = Request.ServerVariables["SERVER_NAME"].ToLower();

        if (sname.ToLower().Contains("intranet"))
        {
        Response.Redirect("/intranet/Default.aspx");
        }
        else if ((sname.ToLower().Contains("extranet")))
        {
            Response.Redirect("/extranet/Default.aspx");
        }
        else {
            Response.Redirect("/web/Default.aspx");
        }
    }

Я изменил файл моих хостов, чтобы внутренняя и внешняя сети перенаправлялись на мою локальную машину.

127.0.0.1       intranet
127.0.0.1       extranet

Затем я ввожу URL http://extranet в свой браузер.

Однако проблема заключается в том, что значение переменной сервера, возвращаемое из Request.ServerVariables [ "SERVER_NAME" ], всегда является "localhost", а не "extranet"

Любая помощь в том, как получить правильное значение?

Большое спасибо

Ответ 1

Request.ServerVariables [ "HTTP_HOST" ] получает значение, которое я искал:)

Ответ 2

Ты прав Вы хотите получить полный адрес веб-сайта, на который пришел запрос. Не используйте "SERVER_NAME", используйте "HTTP_HOST". Читайте здесь, http://www.requestservervariables.com/get-address-for-website

Ответ 3

Server_Name возвращает имя хоста сервера, псевдоним DNS или IP-адрес, как это показано в URL-адресах саморегуляции

Почему вы не используете Request.URL?

Ответ 4

Ваши файлы хостов перенаправляют запросы только на определенный IP-адрес - вы не можете изменить имя запрашивающих машин, отредактировав их.