Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
1337 / 917 / 264
Регистрация: 08.08.2014
Сообщений: 2,756
.NET 9

Не работает 'SwaggerEndpoint'

09.09.2025, 14:24. Показов 969. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь по этой инструкции настроить SwaggerUI на новую .NET-реализацию OpenAPI.

Ну т.е. делаю самый минимум:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
..
 
builder.Services.AddOpenApi();
 
var app = builder.Build();
 
app.MapOpenApi();
 
app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/openapi/v1.json", "v1");
});
 
..
Ок, сам JSON корректно доступен по пути '/openapi/v1.json' (путь по умолчанию).

При этом Сваггер попросту игнорирует 'SwaggerEndpoint' и при отображении UI выдаёт:
Если в 'MapOpenApi' константой задать именно этот путь, то ок, Swagger находит и отображает документ.

Но как сам SwaggerUI заставить брать документы по пути, отличному от его пути по умолчанию?

P.S.: вызов 'SwaggerEndpoint' происходит (точка останова сработывает), в него передать любой мусор, можно передать полный URL, можно, как в документации, относительный. Разницы никакой.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2025, 14:24
Ответы с готовыми решениями:

Приложение работает в Debug, странно работает в Release и не работает при билде
Действия выполняются на эмуляторе Pixel 2. Android 9.0. Если я запускаю приложение с конфигурацией...

Цикл работает неправильно, в то время как POST работает
Всем привет! Я хотел написать под php скрипт с авторизацией, брут, на своем сайте(подбор пароля)....

Работа с INI: некорректная работа пользовательской функции
Ранее нашел код для работы с ini-файлами: public class INI { ///...

11
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 15:18
kotelok, не могу воспроизвести, добавил кастомный endpoint - отображается,
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
var builder = WebApplication.CreateBuilder(args);
 
// Add services to the container.
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();
 
var app = builder.Build();
 
// Configure the HTTP request pipeline.
app.MapOpenApi();
app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/openapi/v1.json", "v1");
});
 
app.UseHttpsRedirection();
 
var summaries = new[]
{
    "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
 
app.MapGet("/weatherforecast", () =>
{
    var forecast = Enumerable.Range(1, 5).Select(index =>
            new WeatherForecast
            (
                DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                Random.Shared.Next(-20, 55),
                summaries[Random.Shared.Next(summaries.Length)]
            ))
        .ToArray();
    return forecast;
})
    .WithName("GetWeatherForecast");
 
app.MapGet("/rng", () => new { Number = Random.Shared.Next(-100, 100) })
    .WithName("random-number");
 
app.Run();
 
record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
{
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
Миниатюры
Не работает 'SwaggerEndpoint'  
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 15:38
.NET SDK - 9.0.304

Добавлено через 2 минуты
ОС - Arch Linux, если имеет значение.

Добавлено через 16 минут
На винде тоже самое.
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 15:41
Скрин.
Миниатюры
Не работает 'SwaggerEndpoint'  
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 17:12
Цитата Сообщение от kotelok Посмотреть сообщение
Если в 'MapOpenApi' константой задать именно этот путь, то ок, Swagger находит и отображает документ.
Цитата Сообщение от kotelok Посмотреть сообщение
Но как сам SwaggerUI заставить брать документы по пути, отличному от его пути по умолчанию?
А вот с этим уже проблема, да...

Добавлено через 7 минут
Цитата Сообщение от kotelok Посмотреть сообщение
Но как сам SwaggerUI заставить брать документы по пути, отличному от его пути по умолчанию?
А зачем понадобился путь отличный от значения по-умолчанию?
Вот это просто работает:
C#
1
2
app.MapOpenApi();
app.UseSwaggerUI();
Добавлено через 49 минут
Цитата Сообщение от kotelok Посмотреть сообщение
Но как сам SwaggerUI заставить брать документы по пути, отличному от его пути по умолчанию?
Скорее всего, SwaggerUI заточен на работу именно со своим родным расширением AddSwaggerGen, и он понятия не имеет о каких то других url-ах для OpenAPI-документов, кроме дефолтного (/openapi/v1.json).
Он ятп просто "не дружит" c новым расширением от MS.
1
1337 / 917 / 264
Регистрация: 08.08.2014
Сообщений: 2,756
09.09.2025, 19:23  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
Вот это просто работает:
Не, так точно не заработает. У SwaggerUI и у новой реализации OpenAPI (от MS) разные пути по умолчанию.
У первого: /swagger/v1/swagger.json (для загрузки json для отрисовки).
У второго: /openapi/v1.json (для предоставления сгенерированного json).

Т.е. в любом случае надо либо одному, либо другому путь перенастроить.

P.S.: проблема оказалась в браузере, почему-то стал кэшировать все страницы, включая 'localhost:6008', после F5 всё ок.
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 19:36
Цитата Сообщение от kotelok Посмотреть сообщение
Не, так точно не заработает.
В SDK 9.304?
Миниатюры
Не работает 'SwaggerEndpoint'  
1
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
09.09.2025, 19:45
Я тогда не понимаю, что я делаю не так.

Добавлено через 6 минут
Если я комментирую
C#
1
builder.Services.AddOpenApi();
либо
C#
1
app.MapOpenApi();
То сваггер говорит, мол не могу найти json по адресу /openapi/v1.json.
То есть очевидно они работают вместе без конфликтов, но SwaggerUI не способен принимать любой адрес, отличный от дефолтного.

Добавлено через 31 секунду
Такое ощущение, что там на клиенте просто берется дефолтный адрес и все, а настройки не учитываются.
1
1337 / 917 / 264
Регистрация: 08.08.2014
Сообщений: 2,756
09.09.2025, 20:43  [ТС]
Цитата Сообщение от IamRain Посмотреть сообщение
но SwaggerUI не способен принимать любой адрес, отличный от дефолтного
Не, он точно может. Он идёт по любому пути, что указан через "SwaggerEndpoint".

Если явно ничего не указывать, то SwaggerUI ищет JSON по пути '/swagger/v1/swagger.json' (можно в 'MapOpenApi' этот урл указать, и тогда тоже всё ок будет).

Может, есть ещё какие-нибудь настройки через конфиги? Но в доке говорится, что эндпоинт надо-таки указывать.

* но при экспериментах приходится не забывать каждый раз принудительно страницу рефрешить ).
1
HF
 Аватар для HF
1303 / 882 / 199
Регистрация: 09.09.2011
Сообщений: 2,590
Записей в блоге: 2
10.09.2025, 01:17
Цитата Сообщение от IamRain Посмотреть сообщение
Я тогда не понимаю, что я делаю не так.
Если я комментирую
..
либо
Через service - регистратор, через app - активатор.
Поэтому они вместе и работают. Так почти со всеми сервисами в AspNetCore.
0
 Аватар для IamRain
4693 / 2701 / 734
Регистрация: 02.08.2011
Сообщений: 7,226
10.09.2025, 01:30
Цитата Сообщение от HF Посмотреть сообщение
активатор.
Через app я называю непосредственное встраивание в пайплайн (порядок важен). Активатор - очень неточное название.
Но смысл вопроса был в том, почему вообще без конфигурирования путей к json-описанию все работает.
А у kotelok не работает.
0
HF
 Аватар для HF
1303 / 882 / 199
Регистрация: 09.09.2011
Сообщений: 2,590
Записей в блоге: 2
10.09.2025, 08:58
Цитата Сообщение от IamRain Посмотреть сообщение
Через app я называю непосредственное встраивание в пайплайн (порядок важен).
Как раз вроде "service." и есть "встраивание в пайплайн", потому что это и есть регистрация миддлваре, и порядок там определяется.
А "app." это уже активация сервиса - ну типа чтобы вообще работал, может "start" какой-то делается или типа того.

А про файлы я понял, даже не пишу про это. Без понятия про шваггер.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.09.2025, 08:58
Помогаю со студенческими работами здесь

Рабочее регулярное выражение не работает в .NET, но работает в программе RegExr
Есть таблица и есть регулярка для вытаскивания её из глючного html кода. Составил регулярку в...

Код работает в IE 5, но не работает в IE 5.5
Проблема вот в чем. Данный код чудесно работает, когда пользователь использует IE 5.0. <%...

то работает, а то не работает (run time error 800a0005)
Ситуация такая: сделал приложение, используя DTC, разместил его на сервере (далеко). Приложение...

ASP страницы работают в IE, но не работают в Netscape.
Napisal kuchu ASP stranits, kotoriye rabotayut klassno v IE, no kogda progonayu ih v Netscape to...

Как может сервер-сайд код работать или не работать на конкретном компе?
Всем привет! Вот такая проблема. Есть сайт, все работает ок, но - один из компов имеющий Win98 и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru