【发布时间】:2021-11-10 20:24:43
【问题描述】:
使用下面的代码,我可以点击(使用 Fiddler):
- 通过 GET 获取客户:odata/Customers
- 通过 POST 发布(CustomerModel 客户):odata/Customers
- 通过 DELETE 删除:odata/Customers(5)
删除方法如下:
public IHttpActionResult Delete([FromODataUri] int key)
{
Console.WriteLine(key);
}
我按了方法,我得到了钥匙,没问题。
但是我没有用key打get方法(不用key的get方法没问题,我得到完整列表):
// GET: odata/Customers(5)
public IHttpActionResult GetCustomer([FromODataUri] int key)
{
Console.WriteLine(key);
}
我收到此错误(通过 Fiddler 的响应标头): HTTP/1.1 404 未找到
WebApiConfig 是:
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());
}
}
【问题讨论】:
-
你可以尝试调用方法 GetCustomers([FromODataUri] int key) 吗?
-
我试过了,同样的结果..找不到。
-
Get([FromODataUri] int key) 怎么样?
-
有效。名为“Get”的方法并使用 odata/Customers(2) 调用,这很奇怪吗?还有我在 VS 创建控制器时给的名字
-
我已将其发布为答案,以便其他人可以看到它。这很奇怪,但是当使用构建器设置 OData 而不是实体时,事情确实开始变得困难!
标签: c# .net asp.net-web-api odata