なか日記

一度きりの人生、楽しく生きよう。

自サイトのURLを取得する方法

Twitter認証後のコールバック先URLなど、自サイトのURLを指定することがあると思います。

Web.configにパラメータとして登録するという力技もありますが、環境を作る度に設定が必要なので面倒ですよね。なんか簡単な方法ないかなーというのでこんな感じでやっつけてみました。

Request.Urlを使う

ControllerクラスのRequest.Urlを使うことにしました。もちろん、HTTPないしHTTPSでの要求がないと使えません。

Url(Uriクラス)の情報は下記を参照して下さい。

その1

Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "");

AbsoluteUriにはhttp://mydomain.com:63543/Candidate/Timeline?userId=4e30969cのような値が格納されているので、 PathAndQueryに格納されている/Candidate/Timeline?userId=4e30969cの値で置き換えてやれば…という感じ。

ちょっとやっつけ感がひどいですね。

その2

string.Format("{0}://{1}", Request.Url.Scheme, Request.Url.Authority);

Schemeではhttp等のスキーム名が、Authorityにはmydomain.com:63543といったサーバ名とポート番号が取得できますのでこれを繋げてあげる感じ。

これならまぁいいかなーというのでこっちを使うことにしました。

所感

きっともっといいやり方があるはず。「そんな小細工せんでもこれ使えや」的な

追記(10/4) これがベストな方法だと思う

@さんが教えてくれました。ありがとうございます。

ちゃんとメソッドが用意されていたんですね。

すっきりしました!