【问题标题】:Async suffix in a method name now deprecated?现在不推荐使用方法名称中的异步后缀?
【发布时间】:2022-01-26 17:35:05
【问题描述】:

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()

【问题讨论】:

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


    【解决方案1】:

    这确实是一种已知的行为,尽管记录不充分。如果您愿意,可以将其称为错误。

    可以在此处找到原始错误报告,与您所描述的非常相似: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 达成一致意见。

    【讨论】:

    • 谢谢,感谢理由和解决方法。
    猜你喜欢
    • 2016-04-03
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2013-01-17
    • 2016-11-10
    相关资源
    最近更新 更多