我正在尝试创建一个uri,但由于某种原因,每次都在解码路径,导致我的浏览器试图访问uri构建的页面出现问题?
POC:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine("Hello World");
var newLocation = new UriBuilder()
{
Scheme = Uri.UriSchemeHttps,
Host = "localhost",
Path = "/WebResource.axd?d=0"
}.Uri;
Console.WriteLine($"Hello World {newLocation}");
}
}
这个输出:
Hello World
Hello World https://localhost/WebResource.axd%3Fd=0
我希望:
Hello World
Hello World https://localhost/WebResource.axd?d=0
可能它正在转换问号,因为您在.path
而不是.query
中指定了问号。尝试将?d=0
移动到.query
中,看看是否得到相同的结果。
或者,尝试使用MS文档中的重载将完整的URL加载到UriBuilder
中:UriBuilder baseUri = new UriBuilder("http://www.contoso.com/default.aspx?Param1=7890");
我不是专家,但它看起来像是试图用ASCII码或3F(%3F)替换问号。这可能是因为问号在浏览器中表示查询,而不被认为是URI的一部分。我只是猜一下,我不知道该怎么修。
希望我能帮上忙!