2009-08-20 11 views
11

をlocalhostです私は、Visual StudioでASP.NET 3.5アプリケーションを開発しています2008年でRequest.ServerVariables [ "SERVER_NAMEは"]常に

私のデフォルトのページには、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」ではなく「エクストラネット」

のですか?それは自己参照URL

あなたがRequest.URLを使用していないのはなぜに表示されるよう

感謝

+1

ここでサーバー名が余分に小文字になっていることを確認しようとしましたか? – cchamberlain

答えて

12

でRequest.ServerVariables [「HTTP_HOST」]あなたは、要求がに来たことをウェブサイトの完全なアドレスを取得したい私は:)

+1

Hoooolyくそ、私はこの答えを1時間探しています!乾杯!私はこれをもう一度投票し、もしできればあなたにビールを買うだろう。 – SeanKendle

0

Server_Nameは、サーバのホスト名、DNSエイリアス、またはIPアドレスを返しますか?

+1

同じ問題です。Request.URLの値は-Url = {http:// localhost:4690/default.aspx}です。ありがとう –

0

ホストファイルは要求を特定のIPアドレスにリダイレクトするだけです。要求するマシン名を編集することによって変更することはできません。