2
我在MVC4项目中使用NInject作为默认容器和NInjectResolver class。注射效果很好。定制IActionInvoker和异步操作
现在我试图替换默认IActionInvoker
为了提供自定义的JSON序列化,如here所示。
这似乎如果动作返回JsonResult
工作正常,但它扼流圈Task<JsonResult>
(即使我绑定IActionInvoker
到默认ControllerActionInvoker
)。
当我将其转换为异步操作时,操作返回(而不是JSON),此文本为:System.Threading.Tasks.Task<System.Web.Mvc.JsonResult>
- 就像调用ToString()
一样。
我该如何解决这个问题?
谢谢 - 你能澄清一下吗:这也适用于非异步操作吗?如果没有,我应该为IAsyncInvoker和IActionInvoker的ControllerActionInvoker绑定一个这样的调用吗?换句话说,我怎样才能以最小的努力/代码来处理这两种情况? – georgiosd
您只需要注册异步,因为从MVC 4开始,所有控制器都支持异步,但是如果您有同步方法,那么它们将像往常一样工作。 'Controller.CreateActionInvoker()'默认返回一个'AsyncControllerActionInvoker',它最终知道如何处理同步和异步模式(通过['AsyncActionMethodSelector.GetActionDescriptorDelegate()'](http://aspnetwebstack.codeplex.com/SourceControl/changeset /view/c97168711de8#src%2fSystem.Web.Mvc%2fAsync%2fAsyncActionMethodSelector.cs))。 – marcind