获取键未找到的方法
本文关键字:方法 获取 | 更新日期: 2023-09-27 18:04:11
使用下面的代码,我可以点击(使用Fiddler):
- 通过GET: odata/Customers获取客户
- Post(CustomerModel customer)通过Post: odata/Customers
- 通过Delete: odata/Customers(5)删除
delete方法如下:
public IHttpActionResult Delete([FromODataUri] int key)
{
Console.WriteLine(key);
}
我点击方法,我得到了键,没有问题。
但是我没有用键点击get方法(没有键的get方法没有问题,我得到了完整的列表):
// GET: odata/Customers(5)
public IHttpActionResult GetCustomer([FromODataUri] int key)
{
Console.WriteLine(key);
}
我得到这个错误(通过Fiddler响应头):HTTP/1.1 404 Not Found
WebApiConfig is:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<CustomerModel>("Customers");
builder.EntitySet<EmployeeModel>("Employees");
config.MapODataServiceRoute(
routeName: "ODataRoute",
routePrefix: "odata",
model: builder.GetEdmModel());
}
}
方法名需要是Get才能被OData路由拾取:
Get([FromODataUri] int key)
根据Web API OData约定,它应该支持以下两个规则:
- HttpMethodName + entityTypeName
- HttpMethodName
约定#1的优先级高于约定#2。
根据惯例,如果您只在控制器中定义以下操作,您将得到404-NotFound:
GetCustomer([FromODataUri] int key)
GetCustomers([FromODataUri] int key)
否则,如果在控制器中定义了以下至少一个动作,它应该可以工作:
GetCustomerModel([FromODataUri] int key)
Get([FromODataUri] int key)
https://learn.microsoft.com/en-gb/odata/webapi/built-in-routing-conventions列出了Web API OData中使用的路由约定。希望能帮到你。谢谢。