VS2022, Asp.Net MVC .Net 6.0
当函数名以“async”结尾时,url 永远不会起作用。不知道为什么。新的路由默认值、强制执行的新“指南”或仅仅是一个错误?
//works (example https://localhost:7215/home/getuserlist)
public async Task<IActionResult> GetUserList()
//doesn't work (example https://localhost:7215/home/getuserlistasync)
public async Task<IActionResult> GetUserListAsync()
//works (example https://localhost:7215/routetest)
[Route("routetest")]
public async Task<IActionResult> GetUserListAsync()
最佳答案
这确实是一种已知行为,尽管记录不多。如果愿意,您可以将其称为错误。
原始错误报告可以在这里找到,与您描述的非常相似:https://github.com/dotnet/aspnetcore/issues/4849
相应的问题在这里:https://github.com/dotnet/docs/issues/14716。目的是从操作名称中删除后缀,因为它会扰乱路由和链接生成。他们甚至提出了一个解决方法:
services.AddMvc(options =>
{
options.SuppressAsyncSuffixInActionNames = false;
});
尽管有一些报告称线路可能无法正常工作。非常困惑!
这里的讨论阐明了为什么您观察到的行为尚未修复:https://github.com/dotnet/aspnetcore/issues/8998。甚至还有一个未合并的拉取请求,因为没有就如何在不破坏各种常见例程(想想 nameof()
)和命名约定的情况下从操作名称中正确修剪此后缀达成一致:https://github.com/dotnet/aspnetcore/pull/39128 .
关于asp.net - 方法名称中的异步后缀现在已弃用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70844851/