Uriテスト=新しいUri(新しいUri( "http://www.google.com/test")、 "foo");Uriを使用した相対パス
しかしウリテスト=新しいURI(新しいURI( "http://www.google.com/test/")、 "foo" という)。
戻りhttp://www.google.com/foo/test
末尾の/
でルートURIを渡すようにしてくださいすべての場合に http://www.google.com/foo/test
Uriテスト=新しいUri(新しいUri( "http://www.google.com/test")、 "foo");Uriを使用した相対パス
しかしウリテスト=新しいURI(新しいURI( "http://www.google.com/test/")、 "foo" という)。
戻りhttp://www.google.com/foo/test
末尾の/
でルートURIを渡すようにしてくださいすべての場合に http://www.google.com/foo/test
さて、あなたはあなたのベースURIは、/
文字で終わることを確認する必要があります!
public Uri CombineUris(string baseUri, string relativeUri)
{
if (!baseUri.EndsWith("/")) {
baseUri += "/";
}
return new Uri(new Uri(baseUri), relativeUri);
}
を返すための統一された方法があり、最後のスラッシュは非常に重要であると思われます。最後のスラッシュは非常に重要です。 http://www.example.com/foo/bar.html, bar2.html
を検討してください。それはhttp://www.example.com/foo/bar2.html
に解決する必要があります。
Uri test = new Uri(new Uri(GetSafeURIString("http://www.google.com/test")), "foo");
private static string GetSafeURIString(uri)
{
if(uri == null)
return uri;
else
return uri.EndsWith("/") ? uri : uri + "/";
}
それはあなたの 'URIのように見える= null'なので条件が反転しています。 –
null!= uriはC/C++の世界で優れた実践方法でした。しかし、C#では常にブール値を期待しているので、偶発的な割り当てはありません。 – Ramesh
いいえ、あなたが 'ヌル 'でないなら' uri'を返すことを意味しました。私はあなたがそれが* 'ヌル'である場合、それを返すと思います:) –