我想在asp.net c#中获取当前域名。
我正在使用此代码。
string DomainName = HttpContext.Current.Request.Url.Host;
我的网址是,localhost:5858但仅返回localhost。
现在,我在本地主机中使用我的项目。我想获得本地主机:5858。
再举一个例子,当我使用这个域名时
www.somedomainname.com
我想得到 somedomainname.com
请告诉我如何获取当前域名。
我想在asp.net c#中获取当前域名。
我正在使用此代码。
string DomainName = HttpContext.Current.Request.Url.Host;
我的网址是,localhost:5858但仅返回localhost。
现在,我在本地主机中使用我的项目。我想获得本地主机:5858。
再举一个例子,当我使用这个域名时
www.somedomainname.com
我想得到 somedomainname.com
请告诉我如何获取当前域名。
Answers:
使用Request.Url.Host是合适的-这是您检索HTTPHost:标头的值的方法,该标头指定UA(浏览器)所需的主机名(域名),因为HTTP请求的资源路径部分不包含主机名。
请注意,这localhost:5858不是域名,而是端点说明符,也称为“权威”,其中包括主机名和TCP端口号。可通过访问进行检索Request.Uri.Authority。
此外,somedomain.com从那里获取数据是无效的,www.somedomain.com因为可以将Web服务器配置为供www.somedomain.com与相比使用其他站点somedomain.com,但是,如果您确定在这种情况下这是有效的,则您需要手动解析主机名,尽管String.Split('.')在紧要关头。
请注意,Web服务器(IIS)配置与ASP.NET的配置不同,并且ASP.NET实际上完全不了解其下运行的网站和Web应用程序的HTTP绑定配置。IIS和ASP.NET共享相同的配置文件(web.config),这是一个错误的事实。
尝试获取网址的“左侧”,如下所示:
string domainName = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
这会给你要么http://localhost:5858或者https://www.somedomainname.com无论你是在本地或生产。如果要删除该www部分,则应配置IIS,但这是另一个主题。
请注意,生成的URL不会带有斜杠。
http://localhost:60333
www.somedomain.com 是域/主机。子域是重要的部分。www.通常与没有一个可互换使用,但是必须将其设置为规则(即使默认设置),因为它们不相等。考虑另一个子域,例如mx.。该目标可能与的目标不同www.。
鉴于此,我建议您不要做这种事情。就是说,既然您要问,我想您有充分的理由。
就个人而言,我建议www.为此特别包装。
string host = HttpContext.Current.Request.Url.GetComponents(UriComponents.HostAndPort, UriFormat.Unescaped);;
if (host.StartsWith("www."))
return host.Substring(4);
else
return host;
否则,如果您真的100%确定要砍掉任何子域,则将需要一些更复杂的操作。
string host = ...;
int lastDot = host.LastIndexOf('.');
int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.');
if (secondToLastDot > -1)
return host.Substring(secondToLastDot + 1);
else
return host;
就像其他人所说的那样获得港口。
您可以尝试以下代码来获取完全合格的域名:
Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host
这是获取网址名称的快速简便方法。
var urlHost = HttpContext.Current.Request.Url.Host;
var xUrlHost = urlHost.Split('.');
foreach(var thing in xUrlHost)
{
if(thing != "www" && thing != "com")
{
urlHost = thing;
}
}
试试这个:
@ Request.Url.GetLeftPart(UriPartial.Authority)