Swagger UI и ASP.NET - исключение при сопоставлении не найдено - не удается получить доступ к странице пользовательского интерфейса Swagger - PullRequest
0 голосов
/ 14 мая 2018

Я создал некоторый проект ASP.NET Web API в Visual Studio 2017 (.NET Framework 4.6.1).

Я включил пользовательский интерфейс Swagger, используя файл SwaggerConfig.cs.

Всеработал нормально, я мог получить доступ к интерфейсу через http://localhost:54408/swagger/ui/index/.

Я хотел перейти непосредственно к этому URL при запуске приложения (адрес по умолчанию: http://localhost:54408), поэтому я изменил значение Project Urlв свойствах проекта (вкладка Web) до http://localhost:54408/swagger/ui/index/.

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

Теперь, когда я пытаюсь зайти на страницу пользовательского интерфейса чванства, я получаю следующее исключение:

<Error>
    <Message>An error has occurred.</Message>
    <ExceptionMessage>Mapping not found - index/</ExceptionMessage>
    <ExceptionType>Swashbuckle.SwaggerUi.AssetNotFound</ExceptionType>
    <StackTrace> at Swashbuckle.SwaggerUi.EmbeddedAssetProvider.GetAsset(String rootUrl, String path) at Swashbuckle.Application.SwaggerUiHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
    </StackTrace>
</Error>

Я провел некоторое исследование и обнаружил, что должен был удалить .vsпапка в папке проекта.Это не работает.Любые идеи о том, что еще я могу сделать?

На данный момент я знаю, что я должен изменить параметр Start URL в свойствах проекта, но теперь я застрял с описанным исключением.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Очень поздний ответ, но я думаю, что только что понял это.

Длинный ответ: Проблема вызвана добавлением корня приложения в качестве URL-адреса swagger, который, как вы указали, приводит к созданию виртуального каталога в этом месте, что означает, что документация swaggerне может быть загружен.Когда вы загружаете приложение, dotnet также создает редирект http 301, чтобы добавить пропущенный символ «/» в конец URL-адреса в корневом каталоге.Это перенаправление кэшируется на стороне клиента, так что даже когда вы отменяете свои изменения и удаляете каталог .vs (которые необходимы), браузер все еще пытается загрузить сваггер из 'swagger / ui / index /' вместо 'swagger /щ / индекс».Это можно исправить, отключив кэш в инструментах разработчика браузера disablecache или с помощью другого браузера.

Краткий ответ: Исправить:

  1. Восстановить корневой путь приложения
  2. Удалить каталог .vs
  3. Отключить временный кеш браузера (может быть повторно включен после успешной загрузки)
0 голосов
/ 30 марта 2019

Я наткнулся на ту же проблему. Спустя много времени я не смог найти простое решение для этого, и единственный способ, который я мог придумать, чтобы исправить это, на самом деле было просто создать новый проект и скопировать все файлы в этот новый проект. Удаление старого, установка запуска проекта на новый и готово. Работает как шарм.

...