【发布时间】:2020-11-16 02:51:43
【问题描述】:
我正在尝试处理包含片段的相对引用。根据RFC 3986,这似乎是有效的:
relative-ref = relative-part [ "?" query ] [ "#" fragment ]
但是,每次我尝试在 C# 中创建一个包含片段的 URI 时,片段字符都会被转义并包含在路径组件中:
using System;
namespace UriResolution
{
public class Program
{
public static void Main()
{
var baseURI = new Uri(
"/home/user/project-root/Base.item",
UriKind.Absolute);
var relative = new Uri("Relative.item#Fragment", UriKind.Relative);
var directResolved = new Uri(baseURI, "Relative.item#Fragment");
var joined = new Uri(baseURI, relative);
Console.WriteLine($"Base: {baseURI}, Relative: {relative}");
Console.WriteLine($"DirectResolved: {directResolved}, Fragment: {directResolved.Fragment}");
Console.WriteLine($"Joined: {joined}, Fragment: {joined.Fragment}");
}
}
}
产量
Base: file:///home/user/project-root/Base.item, Relative: Relative.item#Fragment
DirectResolved: file:///home/user/project-root/Relative.item%23Fragment, Fragment:
Joined: file:///home/user/project-root/Relative.item%23Fragment, Fragment:
我应该使用其他一些标准库功能吗?是否有一些第三方库被认为是事实上的大炮?
【问题讨论】: