質問

.NET で現在のプロトコル、ホスト、ポートをすばやく取得する簡単な方法はありますか?たとえば、次の URL にアクセスしているとします。

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

返す必要があります:

http://www.mywebsite.com:80

使えることはわかっています Request.Url.AbsoluteUri 完全な URL を取得するには、次を使用できることがわかりました。 Request.Url.Authority ホストとポートを取得しますが、URL 文字列を解析せずにプロトコルを取得する最良の方法がわかりません。

助言がありますか?

役に立ちましたか?

解決

次の (C#) コードでうまくいくはずです。

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

他のヒント

@Rick がこの質問に対して受け入れられた回答を持っていますが、実際には、不適切な名前のメソッドを使用して、これを行うためのより短い方法があります。 Uri.GetLeftPart() 方法。

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

1 つ注意点があります GetLeftPart(), 、 しかし。ポートがスキームのデフォルトのポートである場合は、それが削除されます。ポート 80 は http のデフォルトのポートであるため、次の出力は GetLeftPart() 上記の私の例では次のようになります http://www.mywebsite.com.

ポート番号が 80 以外だった場合、それが結果に含まれます。

asp.netでこれを行っている場合、またはhttpcontext.current.requestにアクセスできる場合は、これらがより簡単で一般的な方法だと思います。

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);

Request.URL は、 ウリ リクエストの。それを取得すると、必要なものはほとんど何でも取得できます。プロトコルを取得するには、 スキーム 財産。

サンプル:

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

お役に立てれば。

さらに短い方法では、新しい ASP.Net が必要になる場合があります。

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

UriComponents 列挙型を使用すると、含める 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

ウリクラス にはさまざまなメソッドが用意されていますが、その多くはリストされていません。

私の例では、取得する必要がありました LocalHost 一緒に Port Number, 、それでこれが私がやったことです:

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

成功したもの: http://localhost:12345

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top