Odata使用jquery get返回404错误
我正在尝试配置一些odata导航,但看不出这里有什么问题 配置:Odata使用jquery get返回404错误,jquery,asp.net-web-api,odata,Jquery,Asp.net Web Api,Odata,我正在尝试配置一些odata导航,但看不出这里有什么问题 配置: public class WebApiConfig { public static void Register(HttpConfiguration config) { ODataModelBuilder modelBuilder = new ODataConventionModelBuilder(); var entitySetConfigur
public class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
var entitySetConfiguration = modelBuilder.EntitySet<Catalog>("Catalog");
entitySetConfiguration.EntityType.Ignore(t => t.OutboundCatalogItems);
entitySetConfiguration.EntityType.Ignore(t => t.OutboundColumns);
entitySetConfiguration.EntityType.Ignore(t => t.OutboundProcessor);
entitySetConfiguration.EntityType.Ignore(t => t.OutboundProcessorID);
entitySetConfiguration.EntityType.Ignore(t => t.RelationshipId);
entitySetConfiguration.EntityType.Ignore(t => t.CatalogConfigurationProperties);
var model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);
config.EnableQuerySupport();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "apicontrollers/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
控制器
public class CatalogController : EntitySetController<Catalog, int>
{
private readonly PDBCoreUnitOfWork _unitOfWork;
public CatalogController()
{
_unitOfWork = new PDBCoreUnitOfWork(0);
}
public override IQueryable<Catalog> Get()
{
return _unitOfWork.Repository<Catalog>().Query().Get();
}
protected override void Dispose(bool disposing)
{
_unitOfWork.Dispose();
base.Dispose(disposing);
}
}
及
public类WebApiConfig
{
公共静态无效寄存器(HttpConfiguration配置)
{
ODataModelBuilder modelBuilder=新ODataConventionModelBuilder();
//var entitySetConfiguration=modelBuilder.EntitySet(“目录”);
//entitySetConfiguration.EntityType.Ignore(t=>t.OutboundCatalogItems);
//entitySetConfiguration.EntityType.Ignore(t=>t.OutboundColumns);
//entitySetConfiguration.EntityType.Ignore(t=>t.OutboundProcessor);
//entitySetConfiguration.EntityType.Ignore(t=>t.OutboundProcessorID);
//entitySetConfiguration.EntityType.Ignore(t=>t.RelationshipId);
//entitySetConfiguration.EntityType.Ignore(t=>t.CatalogConfigurationProperties);
var model=modelBuilder.GetEdmModel();
//config.maphttpAttribute路由();
config.Routes.MapODataRoute(“odata”,“odata”,model);
config.EnableQuerySupport();
//config.Routes.MapHttpRoute(
//名称:“DefaultApi”,
//routeTemplate:“api/{controller}/{id}”,
//默认值:新建{id=RouteParameter.Optional}
// );
}
}
键入localhost/port/odata返回:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="http://localhost:45837/odata">
<workspace>
<atom:title type="text">Default</atom:title>
</workspace>
</service>
此XML文件似乎没有任何与之关联的样式信息。文档树如下所示。
违约
但当我在odata之后添加
目录时,它抛出404 not found。仍然迷路,但仍在进步。我需要交换注册顺序
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(WebApiConfig.Register);
}
protected void Application_EndRequest(object sender, EventArgs e)
{
Helpers.DataAccess.DisposePDBUnitOfWork();
}
}
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(ODataConfig.Register);
}
改变了这个
public class CatalogController : EntitySetController<Catalog, int>
{
....
}
EntitySetController和AsyncEntitySetController在新的WebAPI版本中被删除。始终可以使用“public class{EntitySetName}控制器:ODataController
作为控制器
顺便说一下,您可以参考以下博客了解WebApi 2.2与OData V4的新用法:
您将路由配置为:apicontrollers/…
而不是odata/…
我认为该部分是告诉路由您的api在哪个部分,如果您有一个api控制器和MVC控制器同名,会发生什么?哦,源代码已经按照我的方式设置了它,路由指向他的api文件夹。不,它是WebAPI的每个路由之前的前缀,您可以将其更改为odata
,它将正常工作。使用api/..
和odata/..
进行了尝试,但仍然收到404错误。路由如何知道我的api控制器位于ApiControllers/CatalogController.cs
的路径中开始时,除去webapi之外的所有内容后,它工作了。必须将控制器的扩展名更改为OdataController
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="http://localhost:45837/odata">
<workspace>
<atom:title type="text">Default</atom:title>
</workspace>
</service>
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);
GlobalConfiguration.Configure(ODataConfig.Register);
}
public class CatalogController : EntitySetController<Catalog, int>
{
....
}
public class CatalogController : OdataController
{
....
}