MVC Routing дает исключение ссылки на объект - PullRequest
0 голосов
/ 06 июля 2018

Для .NET Core 2.1 у меня есть следующие настройки маршрутов;

 app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default_id",
                    template: "{controller=Home}/{action=Index}/{id?}");

            });

и следующий контроллер;

 public async Task<ActionResult> Index(Guid id = default(Guid)){
 }

Если я получу доступ как;

http://localhost.example.com:5002/Users/Index/09e3eca9-6c66-09ed-701e-aa26dfab3dd2?Title=Adam

работает нормально, но следующее приводит к ошибке:

http://localhost.example.com:5002/Users/Index/

NullReferenceException: ссылка на объект не установлена ​​на экземпляр объект.

Моя установка не разрешает действие индекса без параметров.

Я что-то здесь упускаю?

PS: я не хочу использовать атрибуты Controller / Action. Если возможно, я хотел бы решить это в Startup.cs

Не ответ, но во время поиска я нашел это: https://github.com/aspnet/Mvc/issues/7518

Кажется, проблема решена, но я все еще получаю ту же проблему.

1 Ответ

0 голосов
/ 06 июля 2018

Я не смог найти ничего в ASP.Net Core документации, но, глядя на ASP.NET Web API 2 Документация , а также это Учебное пособие , я думаювам нужно использовать один из следующих 2 вариантов:

[Route("Home/Index/{id:Guid?}")]
public async Task<ActionResult> Index(Guid id = default(Guid))
{
}

[Route("Home/Index/{id:Guid=default(Guid)}")]
public async Task<ActionResult> Index(Guid id)
{
}
...