使用ODataController在Web API OData服务中路由区分大小写吗?

时间:2014-06-04 04:09:45

标签: asp.net asp.net-web-api odata asp.net-web-api-routing

我跟着this了解ODataController是如何工作的,一切都还可以,但是当我改变请求的时候uri
来自

"localhost:49292/odata/Employees" //result: 200

"localhost:49292/odata/employees" //result: 404

说一句话:" odata"或" Odata"和"员工"一切都好,但小写"员工"返回404.对此有任何解释。此外,asp.net mvc中的路由不区分大小写。

3 个答案:

答案 0 :(得分:2)

如何包含Route属性并将其指向小写。对于大写的web api将关注它

[Route("odata/employees")]

将其添加到控制器顶部

如果odata对于每个操作都很常见,那么您可以包含[RoutePrefix]属性

答案 1 :(得分:1)

您可以使用ODataModelBuilder而不是ODataConventionModelBuilder手动执行此操作

e.g

        var builder = new ODataModelBuilder();
        builder.EntitySet<Order>("Employees");
        builder.EntitySet<Order>("employees"); 

这将有效,但您的元数据将显示2个实体集:

{
@odata.context: "http://localhost:62881/$metadata",
value: [
{
name: "Employees",
kind: "EntitySet",
url: "Employees"
},
{
name: "employees",
kind: "EntitySet",
url: "employees"
}
]
}

答案 2 :(得分:-1)

  

小写&#34; 员工&#34;返回404。

我希望你可能没有这样的拼写错误。

AFAIK,过滤器和属性存在案例限制。 (您可以在那里投票https://aspnetwebstack.codeplex.com/workitem/366)但不确定控制器名称..

您可以使用web api创建REST服务器,而无需使用oData ..