Ответ 1
Request.ServerVariables [ "HTTP_HOST" ] получает значение, которое я искал:)
Я разрабатываю приложение 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"
Любая помощь в том, как получить правильное значение?
Большое спасибо
Request.ServerVariables [ "HTTP_HOST" ] получает значение, которое я искал:)
Ты прав Вы хотите получить полный адрес веб-сайта, на который пришел запрос. Не используйте "SERVER_NAME", используйте "HTTP_HOST". Читайте здесь, http://www.requestservervariables.com/get-address-for-website
Server_Name
возвращает имя хоста сервера, псевдоним DNS или IP-адрес, как это показано в URL-адресах саморегуляции
Почему вы не используете Request.URL
?
Ваши файлы хостов перенаправляют запросы только на определенный IP-адрес - вы не можете изменить имя запрашивающих машин, отредактировав их.