Vra

Is daar 'n eenvoudige manier NET om vinnig te kry die huidige protokol, host, en hawe? Byvoorbeeld, as ek op die volgende skakel:

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

Ek moet terugkeer:

http://www.mywebsite.com:80

Ek weet ek kan Request.Url.AbsoluteUri gebruik om die volledige URL te kry, en ek weet ek kan Request.Url.Authority gebruik om die gasheer en hawe kry, maar ek is nie seker van die beste manier om die protokol te kry sonder die ontleding van die URL string.

Enige voorstelle?

Was dit nuttig?

Oplossing

Die volgende (C #) kode moet doen die truuk

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

Ander wenke

Hoewel @Rick het die aanvaarde antwoord vir hierdie vraag, daar is eintlik 'n korter manier om dit te doen, met behulp van die swak vernoem Uri.GetLeftPart() metode.

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

Daar is 'n vangs te GetLeftPart() egter. As die hawe is die standaard poort vir die skema, sal dit dit strook. Sedert poort 80 is die standaard poort vir http, die uitset van GetLeftPart() in my voorbeeld sal bo wees http://www.mywebsite.com.

As die poort nommer iets anders was as 80, dit wil ingesluit word in die resultaat.

Wel, as jy dit doen in Asp.Net of het toegang tot HttpContext.Current.Request Ek sou sê dit is makliker en meer algemene maniere om hulle:

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

Ek hoop dit help. :)

'n meer gestruktureerde manier om dit te kry is om UriBuilder gebruik. Dit vermy direkte string manipulasie.

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

Request.Url sal jy terugkeer die Uri van die versoek. Sodra jy dit het, kan jy pretty much enigiets wat jy wil haal. Om die protokol te kry, bel die Skema eiendom.

Voorbeeld:

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

Hoop dit help.

Selfs korter manier, kan nuwer ASP.Net vereis:

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

Die UriComponents enum kan jy watter komponent (e) van die URI wat jy wil in te sluit spesifiseer.

Baie soortgelyk aan antwoord Holger se. As jy nodig het om die URL te gryp kan so iets te doen:

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

Die Uri klas bied 'n hele reeks van metodes, baie wat ek nie gelys het.

In my geval, ek nodig het om LocalHost gryp saam met die Port Number, so dit is wat ek gedoen het:

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

Watter suksesvol gegryp: http://localhost:12345

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top