【发布时间】:2013-11-20 18:12:47
【问题描述】:
我正在尝试从客户端发布到 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
}
我遇到的问题是 messages 在进入 Web API 控制器操作时始终为空(但不是 null)。我在调试器中验证了客户端的messages 对象在发布之前确实有项目。
我怀疑这可能与尝试传递对象时未将接口类型转换为具体类型有关,但我不知道如何使其工作。我怎样才能做到这一点?
【问题讨论】:
标签: c# asp.net asp.net-mvc asp.net-web-api dotnet-httpclient