C# 防止在QueryString.Add()处进行URL编码

C# 防止在QueryString.Add()处进行URL编码,c#,asp.net,asp.net-core,odata,C#,Asp.net,Asp.net Core,Odata,我正在使用OData制作一个Restful api,出于某些原因,我希望在中间件内部强制进行扩展过滤 所以如果客户端发送 中间件应该自动将其更改为 ?$expand=联系人、地址 为了做到这一点,我在中间件中做了一个简单的if语句 if (ctx.Request.Path.Value.Contains("customers") && !ctx.Request.QueryString.Value.Contains("?$expand")) { string uri = @

我正在使用OData制作一个Restful api,出于某些原因,我希望在中间件内部强制进行扩展过滤

所以如果客户端发送

中间件应该自动将其更改为

?$expand=联系人、地址

为了做到这一点,我在中间件中做了一个简单的if语句

if (ctx.Request.Path.Value.Contains("customers") && !ctx.Request.QueryString.Value.Contains("?$expand"))
{
    string uri = @"?$expand=";
    ctx.Request.QueryString = ctx.Request.QueryString.Add(uri, "Contact,Address");
}
不幸的是,它一直在生成以下内容:
{?%3F%5C$expand%5C%3D=联系人,地址}


我曾尝试在uri字符串中添加反斜杠,但没有解决问题

我假设是url编码(“转义”)了“$”字符以使其更安全,所以我不会从这个角度来处理这个问题。我会修改此请求的用户,以url解码该请求,这可能会自动完成。请参阅,还有QueryString.ToString()方法。

这只是URL编码。“%3F是“?”,“%5C”是“\”,“%3D”是“=”如何删除它。请参阅