Asp.net mvc 4 异步等待MVC操作返回任务而不是ActionResult

Asp.net mvc 4 异步等待MVC操作返回任务而不是ActionResult,asp.net-mvc-4,async-await,elmah,Asp.net Mvc 4,Async Await,Elmah,我的行动如下: public async Task<ActionResult> Pair(string id) { try { DocuSignAPIManager docuSignAPIManager = new DocuSignAPIManager(); DocuSignEsignatureAuthContainer authContainer = await docuSignAPIMana

我的行动如下:

public async Task<ActionResult> Pair(string id)
    {
        try
        {
            DocuSignAPIManager docuSignAPIManager = new DocuSignAPIManager();

            DocuSignEsignatureAuthContainer authContainer = await docuSignAPIManager.Pair(User.Identity.Name, id).ConfigureAwait(false);

            DocuSignManager.Instance.Pair(User.Identity.Name, authContainer);
        }
        catch(Exception e)
        {
            ErrorManager.Instance.LogError(e);
        }

        return new HttpStatusCodeResult(200);
    }
为了进行测试,我只是使用以下URL从web浏览器调用该操作:

http://localhost:20551/CharteredSurveyor/Pair/password

我真的不明白问题是什么-有人能帮忙吗?

来自ELMAH的
ErrorHandlingControllerFactory
返回一个自定义操作调用程序,它使用该调用程序来确保其
HandleErrorWithElmaAttribute
应用于控制器。它从不提供异步操作调用程序,因此不理解async/await

两个变通办法

  • 尝试升级到最新的ELMAH-它可能有针对async/await的修复程序
  • 删除对
    ControllerBuilder.Current.SetControllerFactory(new ErrorHandlingControllerFactory())
    的调用,只需使用
    GlobalFilters.filters.add(new HandleErrorWithElMaAttribute())将
    HandleErrorWithElMaAttribute
    添加到全局筛选器中即可
  • 干杯, 迪恩这对我来说很有效

    改变

    公共类authController:Controller

    公共类authController:AsyncController

    我使包含导致该错误的异步操作的控制器类从AsyncController类继承,而不是从默认控制器类继承


    我发现

    我认为这只在MVC4中有效-你肯定在使用版本4吗?Dean,是的,我肯定在运行MVC4-在具有类似签名的不同控制器上有另一个操作-唯一真正的区别是它接受FormCollection-真的无法理解…它在没有异步和任务的情况下工作吗?是的,它在没有异步和任务的情况下按预期工作。您的目标是.NET 4.5吗?如果是这样的话,请上传一个最小的复制要点(包括csproj文件)。Dean,谢谢你的反馈-我最终选择了选项2-更少的代码,最终结果是一样的(至少在我的情况下)。
    http://localhost:20551/CharteredSurveyor/Pair/password