Web API 2 Odata V4修补程序返回404
我有一个控制器:Web API 2 Odata V4修补程序返回404,odata,asp.net-web-api2,odata-v4,Odata,Asp.net Web Api2,Odata V4,我有一个控制器: using System.Web.Http; using System.Web.OData; public class InvRecipientAutoInvoiceController : ODataController { // GET: odata/InvRecipientAutoInvoice [EnableQuery] public IQueryable<Inv_RecipientAutoInvoice&
using System.Web.Http;
using System.Web.OData;
public class InvRecipientAutoInvoiceController : ODataController
{
// GET: odata/InvRecipientAutoInvoice
[EnableQuery]
public IQueryable<Inv_RecipientAutoInvoice> GetInvRecipientAutoInvoice()
{
return db.Inv_RecipientAutoInvoice.Where(a=>a.CompanyNumber == CompanyNumber);
}
[AcceptVerbs("PATCH", "MERGE")]
public IHttpActionResult Patch([FromODataUri] int RecipientNumber , [FromODataUri] int RecipientType, Delta<Inv_RecipientAutoInvoice> patch)
{
// XXXX Some Update Code
}
}
- 答复机构:
- 请求机构:
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
我缺少什么?当你打电话时,请求的内容类型是什么?是应用程序/json补丁+json吗?(代替application/json)@yaniv 似乎您希望使用内置路由约定来使用组合键修补实体。但是,不支持组合键 您可以自定义自己的路由约定(请参见),也可以只使用 属性路由简单易用。你只需要在你的补丁动作上加上一个补丁,它就会起作用
[AcceptVerbs("PATCH", "MERGE")]
[ODateRoute("InvRecipientAutoInvoice(RecipientNumber={RecipientNumber},RecipientType={RecipientType})"]
public IHttpActionResult Patch([FromODataUri] int RecipientNumber , [FromODataUri] int RecipientType, Delta<Inv_RecipientAutoInvoice> patch)
{
// XXXX Some Update Code
}
[AcceptVerbs(“补丁”、“合并”)]
[ODateRoute(“InvRecipientAutoInvoice(RecipientNumber={RecipientNumber},RecipientType={RecipientType})”]
公共IHttpActionResult修补程序([FromODataUri]int RecipientNumber,[FromODataUri]int RecipientType,增量修补程序)
{
//XXXX一些更新代码
}
谢谢
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
[AcceptVerbs("PATCH", "MERGE")]
[ODateRoute("InvRecipientAutoInvoice(RecipientNumber={RecipientNumber},RecipientType={RecipientType})"]
public IHttpActionResult Patch([FromODataUri] int RecipientNumber , [FromODataUri] int RecipientType, Delta<Inv_RecipientAutoInvoice> patch)
{
// XXXX Some Update Code
}