URL에서 호스트 도메인을 가져 오시겠습니까?


143

문자열 URL에서 호스트 도메인을 얻는 방법은 무엇입니까?

GetDomain에는 1 개의 입력 "URL", 1 개의 출력 "Domain"이 있습니다.

예 1

INPUT: http://support.domain.com/default.aspx?id=12345
OUTPUT: support.domain.com

예 2

INPUT: http://www.domain.com/default.aspx?id=12345
OUTPUT: www.domain.com

실시 예 3

INPUT: http://localhost/default.aspx?id=12345
OUTPUT: localhost

"호스트 도메인"( "호스트"와 반대되는)을 완전히 오해하지 않는 한 호스트 의 도메인 이 아닌 URL 의 호스트 에 대한 질문 인 것 같습니다 . 답변이 Uri.Host 종류의 지원 라인을 따른다 는 사실은 질문에서 원하는 예와 허용 된 답변을 더 잘 반영하고 맞추기 위해 질문을 업데이트해야한다는 것입니다.
NoOneSpecial

답변:


266

Request객체 또는 Uri객체를 사용 하여 URL 호스트를 얻을 수 있습니다 .

Request.Url 사용

string host = Request.Url.Host;

Uri 사용

Uri myUri = new Uri("http://www.contoso.com:8080/");   
string host = myUri.Host;  // host is "www.contoso.com"

2
안녕하세요, Request.Url을 사용하고 싶었지만 Visual Studio는 여전히 'Request'심볼을 확인할 수 없습니다.를 반환합니다. 나는 무엇이 잘못되었는지 모른다. Visual Studio 2010 및 Net Framework 4.0을 사용합니다. 아무도 증상을 설명 할 수 있습니까? 감사합니다
Michal

1
웹 페이지 / 서비스에 있지만 기본적으로 그 뒤에 있지 않은 Request 객체를 사용할 수 있어야합니다. Request 객체를 사용할 수 없으면 Uri 수업을 할 수 있습니다
Adil

54

이렇게 해보십시오;

Uri.GetLeftPart( UriPartial.Authority )

Uri.GetLeftPart 메서드에 대한 URI 부분을 정의합니다.


http://www.contoso.com/index.htm?date=today- > http://www.contoso.com

http://www.contoso.com/index.htm#main- > http://www.contoso.com

nntp : //news.contoso.com/123456@contoso.com-> nntp : //news.contoso.com

file : //server/filename.ext-> file : // 서버

Uri uriAddress = new Uri("http://www.contoso.com/index.htm#search");
Console.WriteLine("The path of this Uri is {0}", uriAddress.GetLeftPart(UriPartial.Authority));

Demo



15

다음 진술을 시도하십시오

 Uri myuri = new Uri(System.Web.HttpContext.Current.Request.Url.AbsoluteUri);
 string pathQuery = myuri.PathAndQuery;
 string hostName = myuri.ToString().Replace(pathQuery , "");

예 1

 Input : http://localhost:4366/Default.aspx?id=notlogin
 Ouput : http://localhost:4366

예 2

 Input : http://support.domain.com/default.aspx?id=12345
 Output: support.domain.com

myuri.PathAndQuery가 "/"인 경우 작동하지 않습니다. "/"를 ""
로 바꿉니다.

9

가장 좋은 방법은 올바른 방법으로 Uri.Authority필드를 사용하는 것 입니다.

다음과 같이 Uri를로드하고 사용하십시오.

Uri NewUri;

if (Uri.TryCreate([string with your Url], UriKind.Absolute, out NewUri))
{
     Console.Writeline(NewUri.Authority);
}

Input : http://support.domain.com/default.aspx?id=12345
Output : support.domain.com

Input : http://www.domain.com/default.aspx?id=12345
output : www.domain.com

Input : http://localhost/default.aspx?id=12345
Output : localhost

Url을 조작하려면 Uri 객체를 사용하는 것이 좋습니다. https://msdn.microsoft.com/en-us/library/system.uri(v=vs.110).aspx


1

이 시도

Console.WriteLine(GetDomain.GetDomainFromUrl("http://support.domain.com/default.aspx?id=12345"));

support.domain.com을 출력합니다.

아니면 시도

Uri.GetLeftPart( UriPartial.Authority )


-2

WWW는 별칭이므로 도메인을 원할 경우 필요하지 않습니다. 다음은 문자열에서 실제 도메인을 가져 오는 litllte 함수입니다.

private string GetDomain(string url)
    {
        string[] split = url.Split('.');
        if (split.Length > 2)
            return split[split.Length - 2] + "." + split[split.Length - 1];
        else
            return url;

    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.