[英]ASP.NET WebApi Change Feed Route Name
我正在過渡使用WCF數據服務(因為它們顯然已經死了),並嘗試使用較新的Microsoft ASP.NET WebApi 2.1構建OData提要。 我正在尋找一種方法來重命名供稿,使其與類名不同。
我建立了我所有的控制器,現在我試圖稍微重命名它們,以保留集合實體與單個實體的思想。 (例如,提要應命名為WorkCategories,但類名稱應為WorkCategory)。 這可能嗎? 我想做這樣的事情:
public static void Register(HttpConfiguration config)
{
builder.EntitySet<EmailSequenceItem>("EmailSequenceItems");
builder.EntitySet<EmailSequence>("EmailSequences");
builder.EntitySet<WorkCategory>("WorkCategories");
...
config.Routes.MapODataRoute("odata", "odata", builder.GetEdmModel());
config.MapHttpAttributeRoutes();
}
我的控制器如下所示(從模板構建):公共類WorkCategoryController:ODataController {private dcMaintContext db = new dcMaintContext();
// GET odata/WorkCategory
[Queryable]
public IQueryable<WorkCategory> GetWorkCategory()
{
return db.WorkCategories;
}
...
}
但是,當我重命名任何提要時,得到的是導航到http://localhost/odata/WorkCategories
時的404:
HTTP/1.1 404 Not Found
Message: No HTTP resource was found that matches the request URI 'http://localhost/odata/WorkCategories'."
MessageDetail: No type was found that matches the controller named 'WorkCategories'
啊哈! 我在發布它后發現了它。 我只需要將控制器類重命名為WorkCategoriesController,並將2個Queryable方法重命名為GetWorkCategories而不是WorkCategory
public class WorkCategoriesController : ODataController
{
private dcMaintContext db = new dcMaintContext();
// GET odata/WorkCategory
[Queryable]
public IQueryable<WorkCategory> GetWorkCategories()
{
return db.WorkCategories;
}
// GET odata/WorkCategory(5)
[Queryable]
public SingleResult<WorkCategory> GetWorkCategories([FromODataUri] int key)
{
return SingleResult.Create(db.WorkCategories.Where(workcategory => workcategory.ID == key));
}
...
}
默認情況下,控制器的名稱應與EntitySet名稱相同,即WorkCategories。 因此,除非您創建自己的IODataRoutingConvention,否則除WorkCategoriesController以外的其他控制器名稱將不起作用。
對於方法名稱,webapi具有其默認路由規則。
如果要自定義方法名稱,則可以在webapi 2.2中使用AttributeRouting。 http://blogs.msdn.com/b/webdev/archive/2014/03/13/getting-started-with-asp-net-web-api-2-2-for-odata-v4-0.aspx
[ODataRoute("WorkCategories/WhateverName")]
public IQueryable WhateverName() {...}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.