ボタンクリックでASP.NETページからWeb APIを呼び出しました。 これは完全に私がどこかで読んだことがあるものの、それはasync
ないとして、それはデッドロックが作成されます正常に動作している(ラインclient.PostAsJsonAsync(url, sd).Result;
で.Result
の使用に起因する)Web APIをアプリケーションから呼び出す
は、このコードを更新するための最良の方法を提案してください。
private void CallApi(SurveyData sd)
{
using (var client = new HttpClient())
{
string url = ConfigurationManager.AppSettings.Get("url");
client.DefaultRequestHeaders.Accept.Clear();
var response = client.PostAsJsonAsync(url, sd).Result;
if (response.IsSuccessStatusCode)
{
Response.Write("Success");
}
else
{
Response.Write(response.StatusCode + " : Message - " + response.ReasonPhrase);
}
}
}
で構成されたベースURLとAPIメソッドを処理するための汎用的な方法として書き始めている
この方法で試してくださいはい、行、var response = client.PostAsJsonAsync(url、sd).Result;応答を待たなければならない。 webapiで非同期コントローラオプションを使用できます。 – Saadi
わかりませんが、 'CallApi'メソッドを' async'メソッドにして、そのメソッドを使って 'await'を使うとどうなりますか? – Raghuveer
MVCでない場合は、メソッドを非同期化してからclient.PostAsJsonAsyncを待つことができます。一般的です(私はそれを理解しているので、voidメソッドを非同期としてマークするのは悪い習慣です)。 – Tim