1

我有一个包含在标记中的 ascx 控件:

<a href="<%# GetName() %>">

在 ascx.cs 代码隐藏文件中,我有以下内容:

protected string GetName() {
    return HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
}

在代码隐藏中还有一个按钮处理程序,它调用此方法:

protected void myButtonClick(object sender, EventArgs e) 
{
    string server = GetName();
    ...
}

当我请求包含诸如https://my.site.com/test.aspx之类的控件的页面时,该页面向我显示了外部名称(my.site.com),但是当我点击按钮时,处理程序中的调用codebehind 获取内部名称 (my123.test.local)。

任何人都可以向我解释为什么会有不同吗?以及如何在代码隐藏中获取外部域部分?

ps SERVER_NAME 和 HTTP_HOST 给出相同的结果。

此外,当我从 Internet (https://my.site.com/test.aspx) 访问包含以下内容的页面时:

Response.Write("SERVER_NAME 1: " + Request["SERVER_NAME"]);
Response.Write("SERVER_NAME 2: " + HttpContext.Current.Request.ServerVariables["SERVER_NAME"]);

第一行显示内部名称,第二行显示外部地址,例如:

SERVER_NAME 1: my123.test.local
SERVER_NAME 2: my.site.com
4

0 回答 0