C# .NET Uri中编码点的百分比

C# .NET Uri中编码点的百分比,c#,httpwebrequest,uri,C#,Httpwebrequest,Uri,我正在尝试向web服务发送请求,该服务要求请求URI中的某些字符按百分比编码为%2e。从.NET发送请求时遇到问题,因为当我构造Uri实例时,它将%2e字符替换为字符。如何解决这个问题,以服务所需的形式发送web请求 编辑:以下是我构建请求的方式: Uri uri = ...; HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "GET"; request.Accept = "app

我正在尝试向web服务发送请求,该服务要求请求URI中的某些
字符按百分比编码为
%2e
。从.NET发送请求时遇到问题,因为当我构造
Uri
实例时,它将
%2e
字符替换为
字符。如何解决这个问题,以服务所需的形式发送web请求

编辑:以下是我构建请求的方式:

Uri uri = ...;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.Accept = "application/json";
request.UserAgent = "MyUserAgent";
我尝试了以下几点:

  • 使用
    UriTemplate.BindByName
  • 构造
    Uri
    实例,然后使用
    UriBuilder
    尝试插入
    %2e
    字符

    Uri uri = "...";
    UriBuilder builder = new UriBuilder(uri);
    builder.Path = builder.Path.Replace(".", "%2e");
    uri = builder.Uri;
    
  • 构造
    Uri
    ,同时将
    dontEscape
    构造函数参数设置为
    true


您使用什么方法发送请求?你不能用字符串代替
Uri
对象吗?你尝试了什么?(如中所示,您能告诉我们您是如何尝试的)@Guffa
WebRequest.Create
有一个重载,它接受一个
string
,但它所做的只是从该字符串创建一个
Uri
对象并调用另一个构造函数。@Noctis我添加了更多细节,但这里真正的关键是创建一个实例,该实例在HTTP或HTTPS URI的路径组件中包含子字符串
%2e
。我刚刚遇到了这个问题-幸运的是,我调用的服务不需要将点编码为%2e。但是我觉得很烦人,
Uri
会自动执行此操作,而且似乎没有办法禁用它。