0

編集:質問を明確にするために言い換えます

Uri(Uri、uri)コンストラクターの動作を理解しようとしています。

 new Uri(new Uri("http://mydomain.com/some/path"), new Uri("/another/path"))

次の結果が得られます。

 "http://mydomain.com/another/path"

しかし、作成ルールが何であるかを明確に説明しているドキュメントは見つかりません。言い換えれば、私が次のものを決して得ないことが保証されていますか?

 "http://mydomain.com/some/path/another/path"

2番目のパラメーターとして使用しない限り:

new Uri("another/path")
4

3 に答える 3

4

2番目Uri "/another/path"はルート化されている(で始まる/)ので、Uri作成されたドメインの後にドメインが続きます。

2番目Uriがだった場合"another/path"、結果はになります"http://mydomain.com/some/path/another/path"

于 2012-10-04T15:13:35.303 に答える
1

最初のURIは「/」で終わる必要があります。2つ目は、先頭の「/」を削除して、に設定する必要がありますUriKind.Relative

Uri a = new Uri("http://mydomain.com/some/path/");
Uri b = new Uri("another/path", UriKind.Relative);

Uri c = new Uri(a, b);

Console.WriteLine(c);

これは出力します:

http://mydomain.com/some/path/another/path

于 2012-10-04T15:18:59.240 に答える
0

問題は、最初の引数がBASEであり、2番目の引数がBASE-RELATIVEURLであるということです。

2番目のものを見てください:それは「/」で始まります。これは、2番目がABSOLUTEであることを意味します。したがって、ドメイン名のみがベースから取得され、残りは文字通り取得されます。

相対的なものにしたい場合は、相対的なものにします。

new Uri(new Uri("http://mydomain.com/some/path"), new Uri("another/path"))

先頭の/が欠落していることに注意してください!

于 2012-10-04T15:14:31.480 に答える