我的 OData POST 操作将参数接收为 null,因为它从 JayData 客户端获取它们作为正文的一部分,并期望它们作为 URI 的一部分。
我创建了一个基于WCF Data Services 5.6.0和Llblgen Pro 4.0的 OData 服务(只是目前最好的 .Net ORM)。它有一个 POST 动作:
[WebInvoke(Method = "POST")]
public void DeletePeople(string guidsToDelete) {...}
OData v.3 标准不支持将参数作为正文的一部分传递给 POST 操作,但希望它们位于 URI 的 queryString 部分中。也就是说,在 System.Data.Services.Client 中,您必须将它们设置为 UriOperationParameter 而不是 BodyOperationParameter。
我可以在 JayData 的 ServiceOperation 定义中配置将参数发送到哪里,还是我必须假设它现在不支持带参数的 POST?
// This works, of course :-)
// JayData client. EntityContext definitions. Changed to GET instead of POST
'DeletePeople': { type: $data.ServiceOperation, method: 'GET', params: [{ name: 'guidsToDelete', type: 'Edm.String' }] }
// Updated server operation (not action any more):
[WebGet]
public void DeletePeople(string guidsToDelete)
TIA,
赖斯特