如何阻止Uri root被更改?

时间:2016-05-16 13:07:57

标签: c#

我试图运行这个:

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 个答案:

答案 0 :(得分:2)

这不是很直观,但你需要:

  1. 用斜杠结束webRoot
  2. 用斜线开始你的path(否则它会认为它是绝对的,而不是相对的)。
  3. 所以以下内容可以正常使用:

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

答案 1 :(得分: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;