मैंने बटन पर एएसपी.नेट पेज से वेब एपीआई को नीचे क्लिक किया है। यह बिल्कुल ठीक काम कर रहा है के रूप में यह async
नहीं है, हालांकि मैंने कहीं पढ़ा है कि यह गतिरोध पैदा करेगा (वजह से लाइन client.PostAsJsonAsync(url, sd).Result;
में .Result
के उपयोग करने के लिए)एप्लिकेशन से कॉल वेब एपीआई
इस कोड को अद्यतन करने के लिए सबसे अच्छा तरीका है के लिए सुझाव दें।
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);
}
}
}
में विन्यस्त साथ एपीआई तरीकों को संभालने के लिए के रूप में लिखना शुरू किया है के साथ की कोशिश कर सकते हां, रेखा, var प्रतिक्रिया = client.PostAsJsonAsync (url, sd)। Reses; प्रतिक्रिया के लिए इंतजार करना है। आप अपने वेबपी में एसिंक नियंत्रक विकल्प का उपयोग कर सकते हैं। – Saadi
मुझे यकीन नहीं है, लेकिन क्या होगा यदि आप 'CallApi' विधि' async' बनाते हैं और उस विधि का उपयोग करते समय 'await' का उपयोग करते हैं? – Raghuveer
यदि यह एमवीसी नहीं है, तो विधि को एसिंक बनाया जा सकता है और फिर क्लाइंट। पोस्टएएसजेसनएसिंक का इंतजार किया जा सकता है। हालांकि यह आम तौर पर (जैसा कि मैं इसे समझता हूं, वैसे ही विधियों को एसिंक के रूप में चिह्नित करने के लिए खराब अभ्यास)। – Tim