我的行动如下:
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 Status 200代码:
System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult]
为了进行测试,我只是使用以下网址从网络浏览器调用操作:
http://localhost:20551/CharteredSurveyor/Pair/password
我真的不明白问题是什么 - 有人可以帮忙吗?
答案 0 :(得分:3)
ELMAH的ErrorHandlingControllerFactory
返回一个自定义动作调用程序,用于确保将HandleErrorWithElmahAttribute
应用于控制器。它从不提供异步动作调用程序,因此它不理解async / await。
两个解决方法;
ControllerBuilder.Current.SetControllerFactory(new ErrorHandlingControllerFactory())
的来电,只需使用HandleErrorWithElmahAttribute
GlobalFilters.Filters.Add(new HandleErrorWithElmahAttribute());
添加到全局过滤器
醇>
干杯, 迪安
答案 1 :(得分:0)
这对我有用,
改变
public class authController : Controller
到
public class authController : AsyncController
我创建了包含异步操作的控制器类,该操作使该错误继承自AsyncController类而不是默认的Controller类
我发现answer here