В моем приложении 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 символы просто отлично.Я на самом деле не хочу, чтобы кодировал их вообще, если я могу избежать этого, но, кажется, нет способа заставить Кестрела позволить им.