C# MVC路由给对象引用异常

C# MVC路由给对象引用异常,c#,asp.net-mvc,.net-core,asp.net-mvc-routing,asp.net-core-2.1,C#,Asp.net Mvc,.net Core,Asp.net Mvc Routing,Asp.net Core 2.1,对于.NETCore2.1,我设置了以下路由: app.UseMvc(routes => { routes.MapRoute( name: "default_id", template: "{controller=Home}/{action=Index}/{id?}"); }); 以及跟随控制器 public async T

对于.NETCore2.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/
NullReferenceException:对象引用未设置为 反对

我的安装程序不解析无参数索引操作

我是不是遗漏了什么

PS:我不想使用控制器/动作属性。如果可能的话,我想在
Startup.cs

不是答案,但在搜索时我发现:


问题似乎已经解决,但我仍然遇到了同样的问题。

我在ASP.Net核心文档中找不到任何内容,但查看此文档,我认为您需要使用以下两个选项之一:

[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)
{
}
[路由(“Home/Index/{id:Guid?}”)]
公共异步任务索引(Guid id=默认值(Guid))
{
}
[路由(“Home/Index/{id:Guid=default(Guid)}”)]
公共异步任务索引(Guid id)
{
}

您的第一条路线将
id
参数标记为选项(使用
/{id?}
),因此您的第二条路线有点毫无意义-它永远不会有意义executed@StephenMuecke是的,我注意到了。我只是尝试一些随机的东西来让它工作,然后从代码中复制粘贴。我将删除它。您是否尝试过
索引([FromRoute]Guid?id)
。当使用结构作为参数时,最好使用可空版本并选中
.HasValue
,而不是使用
default(T)
[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)
{
}