我想占用我的OData行动,并试图张贴JSON数据为:无法张贴JSON数据的OData的WebAPI服务行动
{
"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;
}
当我试图把这个,我得到了以下问题:
“错误”:{
“代码”:“”,
“消息”:“请求实体的媒体类型‘应用程序/ x WWW的形式进行了urlencoded’不支持该资源”。 ,
“innererror”:{
“消息”:“没有MediaTypeFormatter可读取来自与媒体类型内容类型‘ODataActionParameters’的对象‘应用程序/ x WWW的形式进行了urlencoded’”,
“键入 “: ”System.Net.Http.UnsupportedMediaTypeException“, ”堆栈跟踪“:” 在System.Net.Http.HttpContentExtensions.ReadAsAsync [T](HttpContent内容,类型类型,IEnumerable`1 FO rmatters,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken)在System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage请求,类型类型,IEnumerable`1格式化,IFormatterLogger formatterLogger,的CancellationToken的CancellationToken)”
}
}
响应头:
Content-Type: application/json; odata.metadata=minimal
服务器:IIS/10.0 ODATA-版本:4.0 X-Sourcefiles:???= UTF-8乙QzpcVXNlcnNcbG1pc2hyYVxEb2N1bW VudHNcTGF4bWlrYW50XF9wcm9qZWN0c1xXZWJcRGV2ZWxvcG1lbnRcQ29udHJhY3RzXEluRWlnaHQuQ29udHJhY3RzLldlYlNlcnZpY2VzXG9kYXRhLWNvbnRyYWN0c1xDb250cmFjdHNcRGVmYXVsdC5EZWxldGVTZWxlY3RlZENvbnRyYWN0 = X供电,通过:ASP.NET 日期:星期五,2016年11月25日4点45分35秒GMT 的Content-Length:786
请求头:
POST /ContractsWebServices/ContractsWebService/odata-contracts/Contracts/Default.DeleteItems HTTP/1.1
主持人:本地主机:65314 content-type:application/json content-length:50
{ “contractId”:[1,3,5,7,9], “projectId”:9 }
任何帮助表示赞赏。 谢谢。
我已经使用内容类型为application/JSON和有认证头了。 – Laxmikant
@Laxmikant除了它是说,你的内容类型是application/X WWW的形式,进行了urlencoded – Dijkgraaf
我不同意,所以我已经使用内容类型为application/JSON。即使我试图在另一个控制器,它正在 – Laxmikant