【发布时间】:2018-10-02 08:50:54
【问题描述】:
我正在使用 UriBuilder 创建一个包含查询的 Uri。 我想创建一个这样的 Uri:
file:///C:/ProgramData/bla/index.html?cs=6000
但我得到的是:
file:///C:/ProgramData/bla/index.html%3Fcs=6000
我的代码如下所示:
const string HELP_DIRECTORY_NAME = "help";
const int TOPIC_ID = 6000;
var baseUri = new Uri(@"C:\ProgramData\bla\");
var builder = new UriBuilder(baseUri);
builder.Path = $"{baseUri.AbsolutePath}{HELP_DIRECTORY_NAME}/index.html";
builder.Query = $"cs={TOPIC_ID}";
string absoluteUri = builder.Uri.AbsoluteUri;
absoluteUri 是:
file:///C:/ProgramData/bla/help/index.html?cs=6000
但从我的 VB.Net 应用程序调用它是:
file:///C:/ProgramData/bla/help/index.html%3Fcs=6000
使用相同的代码。
不知道 VB.Net 是否在这里发挥作用,我的理解是它不应该。
如何阻止 UriBuilder 转义我的查询?
【问题讨论】:
-
您的 C# 代码按预期工作。所以我想这是一个VB问题。也许您应该将 vb 标签添加到您的问题中。
-
你能展示你的VB代码吗?
-
VB.Net 代码只是从 C# dll 调用此代码。这只是唯一不同的地方。调用代码的 C# 应用程序正在运行
-
@AndrewMorton 我不太明白你的问题。渲染是什么意思?
-
@HankTheTank 顺便说一句,它甚至不是 UriBuilder 正在逃避任何东西。它是 Uri 类本身。
builder.Uri返回一个Uri实例。您正在调用Uri.AbsoluteUri将其转换为 string - changed in .NET 4.5