Ответ 1
Update
Ниже приведена проблема, описанная ниже в Swashbuckle v5.5.0.
Проблема
Просто столкнулся с той же проблемой. Я думаю, что первопричиной является эта строка в Исходный код Swashbuckle:
var key = encodeURIComponent($('#input_apiKey')[0].value);
Здесь значение из поля ввода HTML проходит через URL-кодирование, превращая пространство в %20
. Я планирую открыть проблему в Swashbuckle repo на GitHub.
Обход
Пока эта проблема не будет решена, обходной путь основан на замене вышеприведенной строки с использованием файла Javascript, введенного в интерфейс Swagger:
-
В проекте, где установлен Swashbuckle, создайте новую папку и назовите ее "Swagger".
-
В новой папке создайте новый файл Javascript под названием "SwaggerUiCustomization.js" и поместите в него script:
(function () { function addApiKeyAuthorization() { var key = $('#input_apiKey')[0].value; if (key && key.trim() != "") { var apiKeyAuth = new SwaggerClient.ApiKeyAuthorization(swashbuckleConfig.apiKeyName, key, swashbuckleConfig.apiKeyIn); window.swaggerUi.api.clientAuthorizations.add("api_key", apiKeyAuth); log("added key " + key); } } $('#input_apiKey').change(addApiKeyAuthorization); })();
-
В обозревателе решений выберите файл и нажмите Alt + Enter, чтобы изменить его Свойства. В окне свойств измените файл Build Action на Embedded Resource.
-
В вашем файле SwaggerConfig.cs добавьте следующую строку внутри блока кода
EnableSwaggerUi()
:c.InjectJavaScript(thisAssembly, "<Project_Default_Namespace>.Swagger.SwaggerUiCustomization.js");
Конечно, замените<Project_Default_Namespace>
на пространство имен по умолчанию для проекта. -
Запустите проект и введите "Знамя" в текстовое поле. Когда вы вызываете действие контроллера, вы должны получить это то же самое значение - с пробелом вместо
%20%
- на стороне сервера.