当您的MVC/Web API从上到下不是异步时会发生什么?

Sam*_*eby 1 c# asp.net asp.net-mvc asynchronous asp.net-web-api

因此,在典型的Web API异步操作中,我们有这样的事情:

[ HttpGet ]
    public async Task<HttpResponseMessage> ReturnSomeStuff() {
        ...
        }
    }
Run Code Online (Sandbox Code Playgroud)

现在,如果我的实际Web API操作不是异步,只是一个普通的方法,但我仍然使用async-things,并且可能只是调用该Result属性Task来返回结果.

如果没有从上到下的整个动作异步,我会错过什么好处?

Sam*_*rie 5

简而言之,不惜一切代价避免这种情况,而是从上到下使用异步.你提出的建议几乎肯定会产生死锁,因为这是一个ASP.NET应用程序.在进一步了解之前,请阅读Stephen Cleary撰写的关于此主题的大部分内容:

http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html