簡體   English   中英

我需要在ASP.NET MVC應用程序中做一些特別的事情來從Web API 2應用程序讀取Json響應嗎?

[英]Do I need to do something special in the ASP.NET MVC app to read a Json response from a Web API 2 application?

我需要在ASP.NET MVC應用程序中定義一些特別的東西來讀取來自ASP.NET Web API的傳入響應嗎?

從我的MVC應用程序,我使用System.Net.HttpClient向ASP.NET Web API發出請求。 API接收請求並對其進行處理,然后返回有效響應。 但是,MVC應用程序似乎從未得到響應。 我在發出請求的線上有一個斷點。 執行該行后,控制流再也不會回來。 MVC應用程序很長一段時間后一直保持等待和超時。

但是,我可以確認API返回了有效的Json響應。 我嘗試在Chrome Postman中編寫此請求,並看到API返回了有效的響應。

這是我的MVC應用程序中向Web API發出請求的代碼:

public async Task<R> PostAsJsonAsync<T, R>(string uri, T value)
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri(_baseUri);

        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        var response = await client.PostAsJsonAsync(uri, value);

        if (response.IsSuccessStatusCode) return await response.Content.ReadAsAsync<R>();
        else return default(R);
    }
}

過去,即在Web API 2之前,我曾讓MVC應用程序與Web API毫無問題地對話。 我不知道我是否缺少Web API 2中引入的內容。

我覺得你陷入僵局。 您在任何地方都使用.Result嗎? 您應該一直使用async 我的意思是您的MVC操作方法也應該是async方法,並且應該await而不使用.Result 請閱讀Stephen Cleary的這篇日志,以獲取更多信息。 http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM