makerofthings7
makerofthings7

Reputation: 61463

Using await Task<T> async hangs controller in MVC app

I have two MVC websites. Site 1 has a controller that calls Site 2 with the following code

 //  If I remove this in the controller of site1, then execution continues....
 var asdf =   SharedTypes.Utilities.GetjsonStream("http://localhost:11541/UIDP/Details/a1?format=json");
 string g =  asdf.Result;


public class Utilities
{
    public static async Task<string> GetjsonStream(string url)
    {
        HttpClient client = new HttpClient();
        HttpResponseMessage response = await client.GetAsync(url);
        string content = await response.Content.ReadAsStringAsync();
        Debug.WriteLine("Content: " + content);
        return content;
    }
}

I'm able to directly browse the URL and see the JSON.. but what is the correct way to download JSON from my peer website in MVC?

Upvotes: 3

Views: 3348

Answers (1)

Tim S.
Tim S.

Reputation: 56536

You should probably turn the controller method into an async method and use await to avoid deadlocks.

public async Task<ActionResult> MyActionAsync()
{
    var asdf = SharedTypes.Utilities.GetjsonStream(someUrl);
    string g = await asdf;
    // return something
}

Microsoft's ASP.NET tutorial includes a page on async methods in ASP.NET MVC 4.

Upvotes: 2

Related Questions