这是 IIS 7.5 上的 ASP.NET 2.0 网站。下面是我的 global.asax。它有 BeginRequest 和一个静态方法。有人看到 Request.ServerVariables["HTTP_HOST"] 为空或为空有任何问题吗?
全球.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 时,我看到请求标头显示主机已按预期设置。
有任何想法吗?
注意:我将直接在 BeginRequest 中移动 GetHost 中的代码,但现在只是寻找对当前行为的一些解释
更新:我试图访问页面上的 Page_Load 并且我得到了正确的值。所以它可能与 Global.asax 或不确定还有什么有关。