programing

ASP에서 현재 도메인 이름을 가져오는 방법.그물

instargram 2023. 5. 12. 20:12
반응형

ASP에서 현재 도메인 이름을 가져오는 방법.그물

저는 asp.net c#의 현재 도메인 이름을 얻고 싶습니다.

저는 이 코드를 사용하고 있습니다.

string DomainName = HttpContext.Current.Request.Url.Host;

은 나의 URL입니다.localhost:5858하지만 그것은 오직 돌아오는 것입니다.localhost.

저는 지금 localhost에서 제 프로젝트를 사용하고 있습니다.localhost:5858을 받고 싶습니다.

다른 예를 들어, 이 도메인을 사용하는 경우

www.somedomainname.com

는 갖다싶을 받고 .somedomainname.com

현재 도메인 이름을 얻는 방법을 알려주시기 바랍니다.

다음과 같이 URL의 "왼쪽 부분"을 가져 보십시오.

string domainName = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);

이것은 당신에게 다음 중 하나를 줄 것입니다.http://localhost:5858또는https://www.somedomainname.com로컬이든 프로덕션이든 상관없습니다. 당신이 경할우제를 싶다면.www파트, IIS를 구성해야 하지만 다른 항목입니다.

결과 URL에는 후행 슬래시가 없습니다.

용사를 합니다.Request.Url.Host-- HTTP의 입니다.Host:HTTP 요청의 리소스 경로 부분에 호스트 이름이 포함되어 있지 않으므로 UA(브라우저)에서 원하는 호스트 이름(도메인 이름)을 지정하는 헤더입니다.

:localhost:5858는 도메인 이름이 아니며 호스트 이름과 TCP 포트 번호를 포함하는 "권한"이라고도 하는 엔드포인트 지정자입니다.은 에액스여검다니에 접속하면 됩니다.Request.Uri.Authority.

게다가, 그것을 얻는 것은 유효하지 않습니다.somedomain.comwww.somedomain.com웹 서버가 다른 사이트에 서비스를 제공하도록 구성될 수 있기 때문입니다.www.somedomain.com와비여하와 somedomain.com하지만 만약 당신의 경우에 이것이 유효하다고 확신한다면, 당신은 수동으로 호스트 이름을 구문 분석해야 할 것입니다.String.Split('.')궁핍한 상태에서 작동합니다.

서버(IIS)은 ASP (IIS) "ASP"와됩니다.NET 구및 ASP.NET은 실제로 실행되는 웹 사이트 및 웹 응용 프로그램의 HTTP 바인딩 구성에 대해 완전히 알지 못합니다.IIS와 ASP 모두에 해당합니다.파일을 합니다(NET은 구성 파일을 공유합니다).web.config 기호입니다는 빨간 색입니다.

다▁of니의 입니다.Request.RequestUri그리고 모든 사람들이 참조할 수 있도록 모든 속성.

여기에 이미지 설명 입력

다음 코드를 시도할 수 있습니다.

 Request.Url.Host +
    (Request.Url.IsDefaultPort ? "" : ":" + Request.Url.Port)

저는 asp.net core 3.1에서 이렇게 사용합니다.

 var url =Request.Scheme+"://"+ Request.Host.Value;

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;

그렇지 않으면 하위 도메인을 완전히 차단할 것이 확실하다면 좀 더 복잡한 것이 필요합니다.

string host = ...;

int lastDot = host.LastIndexOf('.');

int secondToLastDot = host.Substring(0, lastDot).LastIndexOf('.');

if (secondToLastDot > -1)
    return host.Substring(secondToLastDot + 1);
else
    return host;

항구를 얻는 것은 다른 사람들이 말한 것과 같습니다.

HttpContext입니다.현재의.부탁한다.Url.Host에서 올바른 값을 반환합니다.www.somedomainname.com 에서 실행하면 www.somedomainname.com 이 제공됩니다.5858도 함께 받고 싶다면 사용해야 합니다.

HttpContext.Current.Request.Url.Port 

Request.ServerVariables물체는 나에게 효과가 있습니다.저는 그것을 사용하지 않을 어떤 이유도 모릅니다.

ServerVariables["SERVER_NAME"]그리고.ServerVariables["HTTP_URL"]당신이 원하는 것을 얻어야 합니다.

다음 코드를 사용하여 정규화된 도메인 이름을 얻을 수 있습니다.

Request.Url.Scheme + System.Uri.SchemeDelimiter + Request.Url.Host

URL 이름을 쉽게 확인할 수 있는 빠른 방법이 있습니다.

            var urlHost = HttpContext.Current.Request.Url.Host;

            var xUrlHost = urlHost.Split('.');
            foreach(var thing in xUrlHost)
            {
                if(thing != "www" && thing != "com")
                {
                    urlHost = thing;
                }
            }

하위 도메인에서도 MVC에서 기본 URL을 가져오려면 다음과 같이 하십시오.www.somedomain.com/subdomain:

var url = $"{Request.Url.GetLeftPart(UriPartial.Authority)}{Url.Content("~/")}";

string domainName = HttpContext입니다.부탁한다.호스트. 값;

이 선이 그것을 해결할 것입니다.

사용해 보십시오.

@요청합니다.Url.GetLeftPart(UriPartial).권한)

언급URL : https://stackoverflow.com/questions/26189953/how-to-get-current-domain-name-in-asp-net

반응형