これは、IIS 7.5 上の ASP.NET 2.0 Web サイトです。以下は私のglobal.asaxです。BeginRequest と静的メソッドがあります。Request.ServerVariables["HTTP_HOST"] が null または空であることに問題がある人はいますか?
Global.asax:
<%@ Application Language="C#" %>
<script runat="server">
void Application_BeginRequest(object sender, EventArgs e)
{
string host = GetHost(HttpContext.Current); //this is returning null;
}
public static string GetHost(HttpContext context)
{
if (context == null) return null;
string httpHost = context.Request.ServerVariables["HTTP_HOST"];
if (string.IsNullOrEmpty(httpHost)) return null;
string hostName = httpHost.Split(new char[] { ':' })[0];
return hostName;
}
</script>
これは、IIS 6 のローカル ボックスおよびテスト サーバーでは正常に機能しますが、IIS 7.5 の運用環境では機能しません。
デバッグ情報を追加し、null を返しているのはstring.IsNullOrEmpty(httpHost)ステートメントであることがわかりました。Firebug を調べると、リクエスト ヘッダーに、ホストが期待どおりに設定されていることが示されています。
何か案は?
注: GetHost のコードを BeginRequest に直接移動する予定ですが、今のところ、現在の動作の説明を探しているだけです。
更新:ページの Page_Load にアクセスしようとしたところ、適切な値が得られました。したがって、何かをしなければならないのは、Global.asax であるか、他に何がわからないかです。