Я нашел похожую тему здесь, но она для .Net Core. У меня такая же проблема с API Swagger.Net (.Net Framework).
Я использую Swagger.Net API версии 8.3.35.101 с .Net framework 4.6.1, и я получаю значок блокировки для каждого метода в пользовательском интерфейсе Swagger. Некоторым API в моем приложении не требуется аутентификация, поэтому я хочу удалить значок замка из таких API.
Значок замка, который необходимо удалить, можно увидеть на изображении выше, выделенном красным. Я считаю, что скрытие его для анонимных методов может быть достигнуто путем реализации IOperationFilter, но я не смог найти какой-либо пример кода для его достижения с помощью .Net framework.
Можете ли вы предоставить пример кода, у меня он отлично работает: nhc-noaa.azurewebsites.net/swagger/ui/…
Код, который я пробовал, не работал, так как он для .Net Core и IOperationFilter отличается в Swagger.Net; поэтому я даже не смог его скомпилировать. Вот ссылка, которую я пробовал. Не могли бы вы поделиться примером кода ссылки, которую вы указали в своем комментарии? Я думаю, что это должно работать для меня.
Я имел в виду пример кода, воспроизводящий вашу проблему, в идеале полный проект... вот код моего проекта: github.com/heldersepu/nhc-noaa там я установил авторизацию с помощью ApiKey
github.com /heldersepu/nhc-noaa/blob/master/nhc-noaa/App_Start/…
Я хотел бы разобраться, почему вы получаете значок замка на всех ... можете ли вы создать проект на GitHub, воспроизводящий ваши проблемы, и опубликовать ссылку здесь?
Извиняюсь за задержку с ответом, был в отпуске в связи с новогодними праздниками. Я проверю ваш проект сегодня и обязательно предоставлю вам образец, если это не сработает для меня.
Еще раз извиняюсь за задержку с ответом, Хелдер. Я был переключен на другой проект, поэтому не мог найти время, чтобы вникнуть в эту проблему. Я видел ваш проект, и я могу выяснить основную причину этой проблемы. Проблема в том, что я не передал тип AuthorizationFilterAttribute при настройке .ApiKey в файле SwaggerConfig. Теперь я изменил свой код на c.ApiKey("ApiKey", "header", "Аутентификация ключа API", typeof(API_Bearer_Session_Authorization_Filter));. Без оператора typeof() вы получите значок замка на каждом API. Пожалуйста, опубликуйте это как ответ. Спасибо за вашу помощь.
Вот ответ из того, что мы обсуждали в комментариях:
Проблема заключается в неправильном типе конфигурации ApiKey
, вот как это должно быть:
c.ApiKey("apiKey", "header", "API Key Authentication", typeof(KeyAuthorizeAttribute));
c.ApiKey("appId", "header", "APP ID Authentication", typeof(KeyAuthorizeAttribute));
Этот код на github:
https://github.com/heldersepu/nhc-noaa/blob/master/nhc-noaa/App_Start/SwaggerConfig.cs#L75
И живой образец:
http://nhc-noaa.azurewebsites.net/swagger/ui/index?docExpansion=list&filter=#/
Значок замка есть только на одном из них.
Нет, это не дубликат. Я уже дал эту ссылку в своем вопросе, но это для ядра .Net, и я использую Swagger.Net для платформы .Net.