Запретить кодировку URL в QueryString.Add () - PullRequest
3 голосов
/ 05 апреля 2019

Я делаю API Restful с использованием OData, и по некоторым причинам я хочу принудительно использовать расширенную фильтрацию в промежуточном программном обеспечении.

Так что, если клиенты отправляют

http://localhost:52973/odata/customers

Промежуточное программное обеспечение должно автоматически изменить его на

http://localhost:52973/odata/customers?$expand=Contact,Address

Чтобы сделать это, я сделал простое утверждение 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=Contact,Address}

Я пытался добавить обратную косую черту внутри строки uri, но это не помогло.

1 Ответ

0 голосов
/ 05 апреля 2019

Я бы предположил, что это url-кодирование ("экранирование") символа '$', чтобы сделать его более безопасным, поэтому я бы не стал подходить к этой проблеме с этой точки зрения.Я хотел бы изменить ваши потребители этого запроса, чтобы URL-декодировать запрос, что может быть сделано автоматически.См. QueryString.ToUriComponent , а также метод QueryString.ToString ().

...