我从当前用户那里得到ReffererUrl,如果refferer存在,我需要从中提取没有.com / .co.uk ....等值的主机名。因此,如果ReffererUrl是http://main.something.biz/sup.aspx?r=e3432r3,我想得到“某事”。
无论是Regex还是别的什么都没关系。
感谢...
答案 0 :(得分:2)
注意:它仅适用于您的规范:您可以通过在代码末尾添加更多条件来扩展它。但是我会说当路径像“abc.ss33.video.somthing.co.us”
时它不会起作用 Uri u = new Uri("http://main.something.biz/sup.aspx?r=e3432r3");
string a = u.DnsSafeHost;
string[] arr1 = a.Split('.');
string somethinVar = String.Empty;
if (arr1.Length == 3)
somethinVar = arr1[1];
答案 1 :(得分:0)
在您描述的意义上没有内置的方法来执行此操作,因为IIS和ASP.NET都不知道主机名和域名之间的区别。
你必须编写一些代码才能做到这一点。
一个例子可能是:
string hostName=ReffererUrl.split('.')[1];
此代码仅在ReffererUrl看起来像您发布的那个时才有效,并且您必须确保split函数返回一个数组大于1的数组
答案 2 :(得分:0)
HttpContext.Current.Request.ServerVariables("HTTP_HOST")
答案 3 :(得分:0)
使用子域提取域(如果存在): -
Public Function ExtractSubAndMainDomainFromURL(URL As String) As String
'
' cut-off any url encoded data
URL = URL.Split("?"c)(0)
'return array of segments between slashes
Dim URLparts() As String = URL.Split("/"c)
'find first segment with periods/full-stops
Dim Domain As String = Array.Find(URLparts, Function(x) (x.Contains(".")))
'check if nothing returned - if necessary
If IsNothing(Domain) Then Domain = String.Empty
Return Domain
End Function