我想在asp.net c#中获取当前域名。
我正在使用此代码。
string DomainName = HttpContext.Current.Request.Url.Host;
我的网址为localhost:5858
,但它只返回localhost
。
现在,我在localhost中使用我的项目。我想得到localhost:5858。
另一个例子,当我使用这个域
时www.somedomainname.com
我想获得somedomainname.com
请告诉我如何获取当前域名。
答案 0 :(得分:63)
尝试获取网址的“左侧部分”,如下所示:
string domainName = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
这将为您提供http://localhost:5858
或https://www.somedomainname.com
,无论您是本地还是制作。如果要删除www
部分,则应配置IIS以执行此操作,但这是另一个主题。
请注意,生成的网址不会有斜杠。
答案 1 :(得分:54)
使用Request.Url.Host
是合适的 - 它是如何检索HTTP Host:
标头的值,它指定UA(浏览器)想要的主机名(域名),作为资源路径的一部分。 HTTP请求不包含主机名。
请注意,localhost:5858
不是域名,它是端点说明符,也称为“权限”,包括主机名和TCP端口号。通过访问Request.Uri.Authority
来检索此内容。
此外,从somedomain.com
获取www.somedomain.com
无效,因为与www.somedomain.com
相比,可以将网络服务器配置为提供somedomain.com
的其他网站,但是如果您确保这在你的情况下是有效的,然后你需要手动解析主机名,尽管使用String.Split('.')
可以解决这个问题。
请注意,Web服务器(IIS)配置与ASP.NET的配置不同,并且ASP.NET实际上完全不知道它运行的网站和Web应用程序的HTTP绑定配置。 IIS和ASP.NET共享相同的配置文件(web.config
)这一事实是一个红色的鲱鱼。
答案 2 :(得分:39)
答案 3 :(得分:16)
您可以尝试以下代码:
Request.Url.Host +
(Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port)
答案 4 :(得分:5)
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;
获得端口就像其他人说的那样。
答案 5 :(得分:2)
Request.ServerVariables
对象适合我。我不知道有什么理由不使用它。
ServerVariables["SERVER_NAME"]
和ServerVariables["HTTP_URL"]
应该可以获得您正在寻找的内容
答案 6 :(得分:1)
HttpContext.Current.Request.Url.Host返回正确的值。如果您在www.somedomainname.com上运行它,它将为您提供www.somedomainname.com。如果你想获得5858,你需要使用
HttpContext.Current.Request.Url.Port
答案 7 :(得分:1)
您可以尝试以下代码来获取完全限定的域名:
fun testA(str: String, listner: java.util.function.Function<String, Void?>) {
...
}
testA(("hello") { lstr ->
print(lstr)
null
}
答案 8 :(得分:1)
这是一个快速简单的方法来获取网址的名称。
var urlHost = HttpContext.Current.Request.Url.Host;
var xUrlHost = urlHost.Split('.');
foreach(var thing in xUrlHost)
{
if(thing != "www" && thing != "com")
{
urlHost = thing;
}
}
答案 9 :(得分:0)
尝试一下:
@ Request.Url.GetLeftPart(UriPartial.Authority)
答案 10 :(得分:0)
即使在子域www.somedomain.com/subdomain
下,也要在MVC中获取基本URL:
var url = $"{Request.Url.GetLeftPart(UriPartial.Authority)}{Url.Content("~/")}";
答案 11 :(得分:0)
我在asp.net core 3.1中像这样使用它
var url =Request.Scheme+"://"+ Request.Host.Value;