我試圖張貼到從客戶端的Web API方法,如下所示:POST與IEnumerable的<Interface>類型參數的Web API行動
// 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;
我的Web API控制器動作看起來是這樣的:
public HttpResponseMessage Post([FromBody]IEnumerable<IMessageApiEntity> messages)
{
// Do stuff
}
我遇到的問題是,當進入Web API控制器動作時,messages
始終爲空(但不爲空)。我在調試器中驗證過,客戶端上的messages
對象在發佈之前確實有其中的項目。
我懷疑它可能與嘗試傳遞對象時未將接口類型轉換爲具體類型有關,但我不知道如何使其工作。我怎樣才能做到這一點?
謝謝。奇蹟般有效。幫了我很多。 –
而不是實例化一個新的'SerializerSettings',我建議更新默認值(只需按照您在'WebApiConfig.cs'中的方式訪問它)。這樣你就不會失去其他默認的串行器設置。 –