我有一个包含在标记中的 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