Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
| Ценность | |
|---|---|
| Идентификатор правила | ASP0007 |
| Категория | Использование |
| Исправление является разрушающим или неразрушающим. | Неразрывный |
Причина
Параметр маршрута объявляется как обязательный в определении делегата, но помечается как необязательный в маршруте конечной точки.
Описание правила
Если конечная точка объявлена, необязательность параметров может быть объявлена как в шаблоне маршрута, так и в аргументах обработчика маршрутов. Если параметр объявлен как необязательный в обработчике, он также должен быть объявлен как необязательный в шаблоне маршрута. Например, GET /todos не может соответствовать следующему коду:
app.MapGet("/todos/{id}", (int? id) => {});
Приведенный выше код не соответствует GET /todos , так как id параметр не был предоставлен, даже если он рассматривается как необязательный в обработчике маршрутов.
Устранение нарушений
Чтобы устранить нарушение этого правила, убедитесь, что необязательность в шаблоне маршрута и делегат соответствовали друг другу. Например, для следующего примера кода:
app.MapGet("/todos/{id}", (int? id) => {});
Если параметр должен быть обязательным, сделайте тип, не допускающий значение NULL, удалив ? его из int?:
app.MapGet("/todos/{id}", (int id) => {});
Если параметр должен быть необязательным, необходимо применить оператор ?:
app.MapGet("/todos/{id?}", (int? id) => {});
Когда следует подавлять предупреждения
Не подавляйте предупреждение из этого правила. Несоответствие необязательности параметров может привести к неожиданному поведению при маршрутизации во время выполнения.
ASP.NET Core