我想从相对URI中提取查询字符串和片段,也就是没有任何方案或主机信息的URI。
除了用假主机名将其变成绝对URI,是否有更优雅的方法来实现这一点?
var relativeUri = "/dir1/dir2/file?a=b&c=d#fragment";
var uri = new Uri(new Uri("http://example.com"), relativeUri);
var path = Uri.UnescapeDataString(String.Concat(uri.Segments));
var query = uri.Query;
var fragment = uri.Fragment;
// path = "/dir1/dir2/file", query = "?a=b&c=d", fragment = "#fragment"
HttpUtility.ParseQueryString()
也适用于相对 URL。可能有点晚了,但我正在检查类似的东西 :) - NomadTravelerHttpUtility.ParseQueryString("/dir1/dir2/file?a=b&c=d#fragment");
返回两个结果:/dir1/dir2/file?a = b
和c = d#fragment
,这绝对不是你想要的。你真正需要传递给它的是一个查询字符串。 - CodeCasterhttps://host
,一切神奇地运作了。 - Emperor Eto