1

これは、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 であるか、他に何がわからないかです。

4

2 に答える 2

1

HOST 名を取得するには、代わりにこれを使用します。

HttpContext.Current.Request.Url.Host

于 2014-04-18T04:01:34.413 に答える