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.com
www.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
'programing' 카테고리의 다른 글
어떻게 하면 이중 따옴표 안에서 이중 따옴표를 피할 수 있습니까? (0) | 2023.05.12 |
---|---|
언제 'npm start'를 사용하고 언제 'ng serve'를 사용합니까? (0) | 2023.05.12 |
구성요소로 각진 2개의 테이블 행 (0) | 2023.05.07 |
호출 스레드는 STA여야 합니다. 많은 UI 구성 요소에서 이 작업이 필요하기 때문입니다. (0) | 2023.05.07 |
대/소문자를 구분하지 않는 목록 정렬, 낮은 대/소문자 구분 없이? (0) | 2023.05.07 |