programing

.NET - 프로토콜, 호스트 및 포트 가져오기

testmans 2023. 5. 10. 20:32
반응형

.NET - 프로토콜, 호스트 및 포트 가져오기

안으로 들어가는 간단한 방법이 있습니까?NET을 통해 현재 프로토콜, 호스트 및 포트를 신속하게 얻을 수 있습니까?예를 들어 다음 URL에 있는 경우:

http://www.mywebsite.com:80/pages/page1.aspx

반환해야 합니다.

http://www.mywebsite.com:80

사용할 수 있습니다.Request.Url.AbsoluteUri완전한 URL을 얻기 위해, 그리고 나는 내가 사용할 수 있다는 것을 알고 있습니다.Request.Url.Authority호스트와 포트를 가져오는 데 URL 문자열을 파싱하지 않고 프로토콜을 가져오는 가장 좋은 방법을 모르겠습니다.

좋은 의견이라도 있나?

비록 @Rick이 이 질문에 대해 받아들여진 답을 가지고 있지만, 실제로는 이름이 좋지 않은 방법을 사용하여 이를 수행하는 더 짧은 방법이 있습니다.

Uri url = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string output = url.GetLeftPart(UriPartial.Authority);

할 수 있는 한 가지 방법이 있습니다.GetLeftPart(),하지만.포트가 스키마의 기본 포트인 경우 해당 포트를 제거합니다.포트 80이 http의 기본 포트이기 때문에 출력은GetLeftPart()위의 나의 예에서.http://www.mywebsite.com.

포트 번호가 80이 아닌 경우 결과에 포함됩니다.

다음 (C#) 코드가 효과를 발휘해야 합니다.

Uri uri = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string requested = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port;

음 만약 당신이 이것을 Asp에서 하고 있다면.인터넷 또는 HttpContext에 액세스할 수 있습니다.현재의.보다 쉽고 일반적인 방법으로 구입할 수 있습니다.

var scheme = Request.Url.Scheme; // will get http, https, etc.
var host = Request.Url.Host; // will get www.mywebsite.com
var port = Request.Url.Port; // will get the port
var path = Request.Url.AbsolutePath; // should get the /pages/page1.aspx part, can't remember if it only get pages/page1.aspx

이것이 도움이 되길 바랍니다.:)

이를 위한 보다 체계적인 방법은 UriBuilder를 사용하는 것입니다.이렇게 하면 직접 문자열을 조작할 수 없습니다.

var builder = new UriBuilder(Request.Url.Scheme, Request.Url.Host, Request.Url.Port);

부탁한다.Url은 요청의 URI를 반환합니다.일단 그것을 손에 넣으면, 당신은 당신이 원하는 것을 거의 다 찾을 수 있습니다.프로토콜을 가져오려면 Scheme 속성을 호출합니다.

샘플:

Uri url = Request.Url;
string protocol = url.Scheme;

이게 도움이 되길 바랍니다.

더 짧은 방법이지만, 더 새로운 ASP가 필요할 수도 있습니다.네트:

string authority = Request.Url.GetComponents(UriComponents.SchemeAndServer,UriFormat.Unescaped)

URI 구성 요소 열거를 사용하여 포함할 URI의 구성 요소를 지정할 수 있습니다.

홀거의 대답과 매우 유사합니다.URL을 가져와야 하는 경우 다음과 같은 작업을 수행할 수 있습니다.

Uri uri = Context.Request.Url;         
var scheme = uri.Scheme // returns http, https
var scheme2 = uri.Scheme + Uri.SchemeDelimiter; // returns http://, https://
var host = uri.Host; // return www.mywebsite.com
var port = uri.Port; // returns port number

URI 클래스는 제가 나열하지 않은 많은 방법을 제공합니다.

제 경우에는, 저는 그들을 붙잡아야 했습니다.LocalHost와 함께Port Number그래서 제가 한 일은 이렇습니다.

var Uri uri = Context.Request.Url;
var host = uri.Scheme + Uri.SchemeDelimiter + uri.Host + ":" + uri.Port; 

성공적으로 붙잡은 것: http://localhost:12345

내 경우에는

Uri uri = new Uri("http://www.mywebsite.com:80/pages/page1.aspx");
string requested = uri.Scheme + Uri.SchemeDelimiter + uri.Authority;

얻을 수 있는 일

https://www.mywebsite.com:80

언급URL : https://stackoverflow.com/questions/21640/net-get-protocol-host-and-port

반응형