Ho chiamato Web API dalla pagina ASP.NET su un clic del pulsante come di seguito. Questo è perfettamente lavorando bene anche se ho letto da qualche parte che creerà situazione di stallo in quanto non è async
(grazie all'uso di .Result
in linea client.PostAsJsonAsync(url, sd).Result;
)Chiamata API Web dall'applicazione
si prega di suggerire modo migliore per aggiornare il codice.
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);
}
}
}
Sì, la riga, var response = client.PostAsJsonAsync (url, sd) .Result; deve aspettare per la risposta. Puoi usare l'opzione controller asincrono nel tuo webapi. – Saadi
Non sono sicuro, ma cosa succede se si esegue il metodo 'CallApi'' async' e si utilizza 'await' mentre si utilizza quel metodo? – Raghuveer
Se non è MVC, il metodo può essere reso asincrono e quindi client.PostAsJsonAsync può essere atteso. Anche se è generalmente (come ho capito, cattiva pratica per contrassegnare i metodi void async). – Tim