asp.net - 方法名称中的异步后缀现在已弃用?

标签 asp.net asynchronous model-view-controller visual-studio-2022

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/

相关文章:

javascript - 鼠标悬停时图表与旧值重叠

c# - 选择选项更改下拉列表 C# ASP.NET 火灾事件

html - 在 HTML 输入中写入非英文数字

asynchronous - 为什么在等待点上持有非发送类型会导致非发送 future ?

c# - Linq - 按多个表分组

c# - 使用 Task 时,如果 ThreadPool 已满/忙会发生什么情况?

spring-integration - 带有错误 channel 的 Spring Integration 异步网关导致线程停顿

c# - 如何从 foreach 传递多个复选框参数

java - Bean 属性不可读或具有无效的 getter 方法

java - 哪个更好,编写另一种方法还是向现有方法添加更多参数?