2016-05-16 7 views
2

Uriルートの変更を中止するにはどうしたらいいですか?私はこれを実行しようとしてい

string webRoot = "http://www.dev/api"; 
string apiRoot = "http://api.dev"; 
string path = "/verify"; 
Uri root = (Settings.IsWebRoot) ? new Uri(webRoot) : new Uri(apiRoot); 
Uri actualUri = new Uri(root, path); 

はしかし、actualUriは(私が期待してい何である)http://www.dev/api/verifyはありませんが、私は間違ってhttp://www.dev/verify

何をしているのですか?

答えて

2

あなたがもう少し柔軟なオプションをしたい場合は、UriBuilderを使用することができます。

string webRoot = "http://www.dev/api"; 
string apiRoot = "http://api.dev"; 
string path = "/verify"; 
Uri root = (true) ? new Uri(webRoot) : new Uri(apiRoot); 

UriBuilder builder = new UriBuilder(root); 
builder.Path += path; 

Uri actualUri = builder.Uri; 
+0

私はまだそう(開始スラッシュを省略する必要がありますかUriBuilderを使用すれば絶対的ではない) –

+0

@PiersKarsenbargこの場合ではありません。 –

+0

webRootとpathの両方がスラッシュで終わっていない場合、間違った結果が出るので、スラッシュでいくらか遊んでいます。 – Evk

2

それは非常に直感的ではないのですが、あなたはする必要があります。

  1. がスラッシュであなたのwebRootを終了します。
  2. pathをスラッシュで開始してください(そうでない場合、絶対的ではなく相対的ではないと思われます)。

ので、次は正常に動作します:

string webRoot = "http://www.dev/api/"; 
string apiRoot = "http://api.dev/"; 
string path = "verify/"; 
Uri root = (true) ? new Uri(webRoot) : new Uri(apiRoot); 
Uri actualUri = new Uri(root, path); 
関連する問題