Asp.net 如何使EntitySetController对我的路线可见?
我创建了一个EntitySetController,如下所示:Asp.net 如何使EntitySetController对我的路线可见?,asp.net,asp.net-mvc,Asp.net,Asp.net Mvc,我创建了一个EntitySetController,如下所示: public class OrdersController : EntitySetController<Order,Guid> { private readonly PizzaCompanyEntities _context = Factories.DataFactory.GetPizzaContext(); protected override void Dispose(bool disposi
public class OrdersController : EntitySetController<Order,Guid>
{
private readonly PizzaCompanyEntities _context = Factories.DataFactory.GetPizzaContext();
protected override void Dispose(bool disposing)
{
if (disposing)
{
_context.Dispose();
}
base.Dispose(disposing);
}
public override IQueryable<Order> Get()
{
return _context.Orders;
}
protected override Order GetEntityByKey(Guid key)
{
var result = _context.Orders.FirstOrDefault(o => o.Id == key);
if (result == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return result;
}
}
但是当我在http://localhost:29064/odata/Orders
我收到一个404和一条消息“路径/odata/Orders的控制器未找到或未实现IController
我无法找出我在注册路由和运行控制器时遗漏了什么。我从头开始做了一个类似的应用程序,没有遇到过这种问题
如何使OData路由正常工作?Wow,说到延迟!无论如何。我认为您缺少WebApiConfig类的Register方法中的config.EnableQuery()调用(假设V3,对于V4,它已更改为AddODataQueryFilter())。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapODataRoute("PizzaApi", "odata", GetImplicitEdm());
}
private static IEdmModel GetImplicitEdm()
{
var builder = new ODataConventionModelBuilder();
builder.EntitySet<Order>("Orders");
builder.EntitySet<Pizza>("Pizzas");
builder.EntitySet<Pizzas_To_Orders>("PizzasToOrders");
builder.EntitySet<Size>("Sizes");
builder.EntitySet<Status>("Statuses");
builder.EntitySet<Pizzas_To_Toppings>("PizzasToToppings");
return builder.GetEdmModel();
}
}
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}