Asp.net mvc 4 自定义IActionVoker和异步操作

Asp.net mvc 4 自定义IActionVoker和异步操作,asp.net-mvc-4,ninject,task-parallel-library,Asp.net Mvc 4,Ninject,Task Parallel Library,我使用NInject作为默认容器,并在MVC4项目上使用。注射效果很好 现在我尝试替换默认的iactionvoker,以便提供自定义JSON序列化,如图所示 如果操作返回JsonResult,但它阻塞了Task(即使我将iactionvoker绑定到默认的ControllerActionInvoker),那么这似乎可以正常工作 当我将其转换为异步操作时,该操作返回(而不是JSON)以下文本:System.Threading.Tasks.Task——就像对其调用ToString() 如何解决此问题

我使用NInject作为默认容器,并在MVC4项目上使用。注射效果很好

现在我尝试替换默认的
iactionvoker
,以便提供自定义JSON序列化,如图所示

如果操作返回
JsonResult
,但它阻塞了
Task
(即使我将
iactionvoker
绑定到默认的
ControllerActionInvoker
),那么这似乎可以正常工作

当我将其转换为异步操作时,该操作返回(而不是JSON)以下文本:
System.Threading.Tasks.Task
——就像对其调用
ToString()


如何解决此问题?

由于您使用的是基于任务的异步,因此必须考虑注入的实例。

谢谢-您能否澄清:这是否也适用于非异步操作?如果不是,我应该为IAsyncInvoker绑定一个这样的调用,为IActionInvoker绑定一个ControllerActionInvoker吗?换句话说,我如何以最小的工作量/代码处理这两种情况?您只需要注册异步的一个,因为从MVC 4开始,所有控制器都支持异步,但如果您有同步方法,这些方法将正常工作<默认情况下,code>Controller.CreateActionInvoker()返回一个
AsyncControllerActionInvoker
,它最终知道如何处理同步和异步模式(通过)。