I had a piece of async code that worked as a console application in Visual Studio 2015. I had to move this code into my MVC web application.
In the code, basically you pass an ID to an Api and it returns a document corresponding to that ID. The issue was, there needed to be 2 calls to the Api. As part of the first call you pass the ID and the Api returned a filename. You then pass the filename to the second call and it returns the corresponding document.
This worked fine in a console application. But when I tried to port it into a MVC web application it did not work. Frankly async calls work fine in MVC applications, but in instances like mine, I needed the code to be synchronous, since the second call to the Api should only start after the first call returns valid data. I even tried to make the code synchronous, but this just caused my application to hang at the .Result line (code below)
I tried googling around for a while and finally stumbled upon the following article.
https://blogs.msdn.microsoft.com/jpsanders/2017/08/28/asp-net-do-not-use-task-result-in-main-context/
And reaziled that this is a deadlock issue within ASP.NET. So I updated my code as per the above link
And everything worked in my MVC application. Hooray!
Hope this helps someone else facing a similar situation.
In the code, basically you pass an ID to an Api and it returns a document corresponding to that ID. The issue was, there needed to be 2 calls to the Api. As part of the first call you pass the ID and the Api returned a filename. You then pass the filename to the second call and it returns the corresponding document.
This worked fine in a console application. But when I tried to port it into a MVC web application it did not work. Frankly async calls work fine in MVC applications, but in instances like mine, I needed the code to be synchronous, since the second call to the Api should only start after the first call returns valid data. I even tried to make the code synchronous, but this just caused my application to hang at the .Result line (code below)
I tried googling around for a while and finally stumbled upon the following article.
https://blogs.msdn.microsoft.com/jpsanders/2017/08/28/asp-net-do-not-use-task-result-in-main-context/
And reaziled that this is a deadlock issue within ASP.NET. So I updated my code as per the above link
And everything worked in my MVC application. Hooray!
Hope this helps someone else facing a similar situation.
Comments
Post a Comment