【发布时间】:2017-05-07 15:29:28
【问题描述】:
我正在尝试使用我的 OData 操作并尝试将 JSON 数据发布为:
{
"contractId":[1,3,5,7,9],
"projectId":9
}
我的操作配置为:
var deleteContracts = builder.EntityType<Contract>().Collection.Action("DeleteItems").Returns<HttpResponseMessage>();
deleteContracts.CollectionParameter<long>("C_Id");
deleteContracts.Parameter<long>("P_Id");
动作如下:
[HttpPost]
public IHttpActionResult DeleteItems (ODataActionParameters param)
{
//DO something
return null;
}
当我尝试调用它时,我遇到了以下问题:
“错误”:{
"代码": "",
"message": "该资源不支持请求实体的媒体类型 'application/x-www-form-urlencoded'。",
“内部错误”:{
"message": "没有 MediaTypeFormatter 可用于从媒体类型为 'application/x-www-form-urlencoded' 的内容中读取类型为 'ODataActionParameters' 的对象。",
"type": "System.Net.Http.UnsupportedMediaTypeException", "stacktrace": "在 System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancelToken)"
}
}
响应头:
Content-Type: application/json; odata.metadata=minimal
服务器:Microsoft-IIS/10.0 Odata-版本:4.0 X-Sourcefiles: =?UTF-8?B?QzpcVXNlcnNcbG1pc2hyYVxEb2N1bWVudHNcTGF4bWlrYW50XF9wcm9qZWN0c1xXZWJcRGV2ZWxvcG1lbnRcQ29udHJhY3RzXEluRWlnaHQuQ29udHJhY3RzLldlYlNlcnZpY2VzXG9kYXRhLWNvbnRyYWN0c1xDb250cmFjdHNcRGVmYXVsdC5EZWxldGVTZWxlY3RlZENvbnRyYWN0?= X-Powered-By: ASP.NET 日期:格林威治标准时间 2016 年 11 月 25 日星期五 04:45:35 内容长度:786
请求头:
POST /ContractsWebServices/ContractsWebService/odata-contracts/Contracts/Default.DeleteItems HTTP/1.1
主机:本地主机:65314 内容类型:应用程序/json 内容长度:50
{ "contractId":[1,3,5,7,9], “项目ID”:9 }
感谢任何帮助。 谢谢。
【问题讨论】:
标签: angularjs web-services asp.net-web-api asp.net-web-api2 odata