इस प्रकार मैं एक ग्राहक से एक वेब एपीआई विधि करने के लिए पोस्ट करने के लिए कोशिश कर रहा हूँ:पोस्ट
// Create list of messages that will be sent
IEnumerable<IMessageApiEntity> messages = new List<IMessageApiEntity>();
// Add messages to the list here.
// They are all different types that implement the IMessageApiEntity interface.
// Create http client
HttpClient client = new HttpClient {BaseAddress = new Uri(ConfigurationManager.AppSettings["WebApiUrl"])};
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// Post to web api
HttpResponseMessage response = client.PostAsJsonAsync("Communications/Messages", messages).Result;
// Read results
IEnumerable<ApiResponse<IMessageApiEntity>> results = response.Content.ReadAsAsync<IEnumerable<ApiResponse<IMessageApiEntity>>>().Result;
मेरे जाल एपीआई नियंत्रक कार्रवाई इस तरह दिखता है:
public HttpResponseMessage Post([FromBody]IEnumerable<IMessageApiEntity> messages)
{
// Do stuff
}
मेरी समस्या यह है कि messages
वेब एपीआई नियंत्रक कार्रवाई में आने पर हमेशा खाली (लेकिन शून्य नहीं) है। मैंने डीबगर में सत्यापित किया है कि क्लाइंट पक्ष पर messages
ऑब्जेक्ट में पोस्ट होने से ठीक पहले इसमें आइटम हैं।
मुझे संदेह है कि ऑब्जेक्ट को पार करने की कोशिश करते समय इंटरफ़ेस प्रकार को ठोस प्रकार में परिवर्तित नहीं किया जा सकता है, लेकिन मुझे नहीं पता कि यह काम करने के बारे में कैसे जाना है। इसे कैसे प्राप्त किया जा सकता है?
धन्यवाद। एक जादू की तरह काम करता है। मुझे बहुत मदद की। –
एक नया 'SerializerSettings' को चालू करने के बजाय मैं डिफ़ॉल्ट अद्यतन करने का सुझाव देता हूं (बस इसे अपने' WebApiConfig.cs' में करें)।इस तरह आप अन्य डिफ़ॉल्ट serializer सेटिंग्स खोना नहीं है। –