gpt4 book ai didi

c# - 任务异步 Controller 方法未命中

转载 作者:太空狗 更新时间:2023-10-29 22:59:37 29 4
gpt4 key购买 nike

因此,我们有一个 MVC 项目,该项目已通过不同版本的 MVC 从 1 升级到 4。

现在我们有一个 Controller 方法:

public async Task<ActionResult> IndexAsync()

所以如果我们转到http://somedomain.xyz/WhicheverController http://somedomain.xyz/无论是哪个 Controller /索引,我们都会收到 404。

http://somedomain.xyz/WhicheverController/IndexAsync 路由到该方法就好了。

我们的路由出了什么问题?

最佳答案

我相信,如果您改为从 AsyncController 派生 Controller,您的示例将有效。

public class MyController:AsyncController
{
public async Task<ActionResult> IndexAsync()
{
return View(); //view called "Index.cshtml", not "IndexAsync.cshtml"
}
}

所以现在您可以在没有 Async 后缀的情况下点击 ~/My/Index,尽管 Async 出现在 Controller 名称中。

这是以前 MVC 异步 Controller 方法的遗留物,通常需要 IndexComplete 方法才能工作,但是对于基于任务的异步 Controller 方法,匹配的 XxxxComplete 方法不是必需的,但遵守 Async 约定。

AsyncController 的实际实现相当稀疏:

public abstract class AsyncController : Controller
{
}

所以在 MVC 堆栈的某个地方, Controller 的类型被测试,并且特殊的路由魔术被打开。

关于c# - 任务异步 Controller 方法未命中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20221603/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com