我有一个包含在标记中的ascx控件:
<a href="<%# GetName() %>">
在ascx.cs代码隐藏文件中,我有以下内容:
protected string GetName() {
return HttpContext.Current.Request.ServerVariables["HTTP_HOST"];
}
在codebehind中,还有一个按钮处理程序,它调用此方法:
protected void myButtonClick(object sender, EventArgs e)
{
string server = GetName();
...
}
当我请求包含https://my.site.com/test.aspx之类控件的页面时,页面会显示外部名称(my.site.com),但是当我点击按钮时,代码隐藏处理程序中的调用获取内部名称(my123.test.local)。
有人可以向我解释为什么会有区别吗? 我如何在代码隐藏中获得外部域名?
P.S。 SERVER_NAME和HTTP_HOST都给出了相同的结果。
此外,当我从互联网(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