5

我有一个动作如下:

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);
    }

当调用该操作时,所有逻辑都被执行,但是我收到的不是 HTTP 状态 200 代码,而是以下内容:

System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult]

为了进行测试,我只是使用以下 URL 从 Web 浏览器调用操作:

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

我真的不明白问题是什么 - 任何人都可以帮忙吗?

4

2 回答 2

3

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

两种解决方法;

  1. 尝试升级到最新的 ELMAH - 它可能修复了异步/等待。
  2. 删除调用ControllerBuilder.Current.SetControllerFactory(new ErrorHandlingControllerFactory())并简单地添加HandleErrorWithElmahAttribute到全局过滤器使用GlobalFilters.Filters.Add(new HandleErrorWithElmahAttribute());

干杯,院长

于 2013-08-10T12:28:16.507 回答
0

这对我有用,

改变

public class authController : Controller

public class authController : AsyncController

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

我在这里找到了答案

于 2017-06-18T12:41:31.027 回答