我一直在玩基于https://github.com/JeffGos/urbanairsharp创建REST包装器。来自MVC控制器的调用方法因异步等待而挂起
public LoginResponse Login()
{
return SendRequest(new LoginRequest(new Model.Login()));
}
private static TResponse SendRequest<TResponse>(BaseRequest<TResponse> request) where TResponse : BaseResponse, new()
{
try
{
var requestTask = request.ExecuteAsync();
return requestTask.Result;
}
catch (Exception e)
{
//Log.Error(request.GetType().FullName, e);
return new TResponse()
{
Error = e.InnerException != null ? e.InnerException.Message : e.Message,
Ok = false
};
}
}
我能够调用登录方法从一个控制台应用程序完全正常,但如果我把它从一个MVC控制器,它通过代码精细步骤,但从来没有经过线
var requestTask = request.ExecuteAsync();
我已经读过这个主题,但不太明白我如何从一个Web应用程序使用这些方法? Login()方法不是异步的,所以我不明白为什么它会从我的MVC操作(也是非异步)失败?
感谢
我相信[this](http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html)可能会有你的答案。 – StriplingWarrior