Только один метод GET в контроллере и все же получение «Не поддерживается Swagger 2.0: несколько операций с путем»

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

Я получал эту ошибку на своем контроллере продукта, поэтому для исследования проблемы я создал демо-контроллер в ASP.NET Web API 2. Демоконтроллер.cs

namespace WMWebAPIControllers.Controllers
{
[RoutePrefix("api/Demo")]
public class DemoController : ControllerBase
{
    [HttpGet]
    [Route("")]
    public async Task<IHttpActionResult> GetProducts(int CatalogType, string ProductNo)
    {
        return Ok();
    }
}}

Странно то, что демо-контроллер имеет только один метод. Не существует метода, с помощью которого swagger нашло бы двусмысленность.

Я не понимаю проблемы. Ниже приведена ошибка чванства.

500 : {"message":"An error has occurred.","exceptionMessage":"Not supported by Swagger 2.0: Multiple operations with path 'api/Demo' and method 'GET'. See the config setting - \"ResolveConflictingActions\" for a potential workaround","exceptionType":"System.NotSupportedException"

вы уверены, что у вас нет старых DLL? возможно, вы переименовали проект, обновили имя dll. Выполните очистку в Visual Studio, затем проверьте папки bin/obj и, наконец, удалите временные файлы Windows\Framework32 и 64. Когда все будет готово, перезагрузите Visual Studio и повторите попытку.

Andrei Dragotoniu 30.05.2019 13:58

@AndreiDragotonu Где я могу найти временные файлы Windows\Framework32 и 64?

Kishan Vaishnav 30.05.2019 14:09

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files, а также Framework64. вам нужно будет обновиться до того места, где вы находитесь

Andrei Dragotoniu 30.05.2019 14:13

Я создал другой проект с тем же контроллером, и он отлично работает.

Kishan Vaishnav 30.05.2019 14:24

@AndreiDragotonu Я удалил все папки в Framework64. В папке Framework не было папки ASP.NET Files. Я очистил решение, удалил папки obj и bin и перезапустил всю машину. Но ошибка сохраняется

Kishan Vaishnav 30.05.2019 15:01

Я не мог понять проблему в этом контроллере, но я нашел проблему в моем основном контроллере. У него был один публичный метод и один метод с [route("")]. Это вызывало двусмысленность. Я пометил общедоступный метод как [NonAction], и ошибка Swagger исчезла.

Kishan Vaishnav 31.05.2019 08:00
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
807
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема заключалась в том, что у меня был один общедоступный метод без атрибута маршрута. Таким образом, swagger обнаружил двусмысленность в методе GetProducts(), который был настроен для пустого маршрута.

Пометил этот общедоступный метод как атрибут [NonAction], и проблема решена.

Его также можно пометить как частный/защищенный, чтобы решить эту проблему, но в моем случае это был метод интерфейса.

Надеюсь, это поможет кому-то.

Это оказалось моей проблемой

tunafish24 28.02.2021 18:39

Другие вопросы по теме