Правильный способ кодировать заголовки ответа HTTP в ASP.NET Core - PullRequest
0 голосов
/ 19 декабря 2018

В моем приложении ASP.NET Core 2.1 я попытался установить значение заголовка ответа, содержащее не-ASCII-символ, и получил следующее исключение:

System.InvalidOperationException: недопустимо не-ASCII илиуправляющий символ в заголовке: 0x00E5 в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ThrowInvalidHeaderCharacter (Char ch) в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeraceaderChadersCatedersCringв Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.ValidateHeaderCharacters (StringValues ​​& headerValues) в Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpResponseValueFest String (.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpHeaders.Microsoft.AspNetCore.Http.IHeaderDictionary.set_Item (ключ строки, значение StringValues)

ОК, достаточно справедливо, я должен кодироватьэто - но как?Если я назову WebUtility.UrlEncode, он также кодирует пробелы и косые черты, например, что явно не то, что я хочу.Какой базовый метод я должен вызывать для кодирования?(Или как мне заставить ASP.NET Core сделать это для меня?)

Редактировать: Это не дубликат этого вопроса - я знаю , что я не может использовать не-ASCII символы, так как это вызывает исключение!Этот вопрос о том, как это исправить, в ASP.NET Core.

Изменить для контекста: Я конвертирую существующее приложение, которое использует HttpListener в разработке и AWS Lambda через API-шлюзв производстве.Оба из них возвращают не-ASCII символы просто отлично.Я на самом деле не хочу, чтобы кодировал их вообще, если я могу избежать этого, но, кажется, нет способа заставить Кестрела позволить им.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...