繁体   English   中英

Webapi CORS无法与breezejs / Odata V4一起使用

[英]Webapi CORS not working with breezejs/Odata V4

我试图在我的webapi上启用CORS,以便可以使用breezejs从另一个项目中使用它。 在我的webapi中,我启用了OData V4并创建了一个供微风使用的edm模型,如下所示:

ODataModelBuilder builder = new ODataConventionModelBuilder();
builder.EntitySet<ModuleEntity>("ModuleEntities");
builder.EntitySet<DomainEntity>("DomainEntities");
builder.EntitySet<ApiUserEntity>("ApiUserEntities");

config.MapODataServiceRoute(
    routeName: "ODataRoute",
    routePrefix: "",
    model: builder.GetEdmModel());

这三个实体集都有自己的源自odatacontrollers的控制器。

我已经在我的webapi中启用了cors,如下所示:

// see http://stackoverflow.com/questions/18032360/cors-using-asp-net-web-api-2-odata-and-breeze for last 2 parameters
var cors = new EnableCorsAttribute("*", "*", "*", "DataServiceVersion, MaxDataServiceVersion"); // origins, headers, methods
config.EnableCors(cors);

当我尝试访问localhost:22594 / $ metadata时,我得到了包含上面配置的EDM模型数据的正确的xml。

从我的使用breezejs和Firefox的web项目中,我收到一条消息,当它尝试查询localhost:22594 / $ metadata时未启用cors,并且不允许我从该来源读取它。

我正在执行这样的微风查询:

// setup dataservice
this.dataService = new this.breeze.DataService({
    serviceName: "http://localhost:22594/"
 });

// initialize adapter with OData as dataservice
this.breeze.config.initializeAdapterInstances({ dataService: "OData" });
this.manager = new this.breeze.EntityManager({ dataService: this.dataService });

// query ApiUser entity
var query = this.breeze.EntityQuery().from("ApiUser");

// execute query 
this.manager.executeQuery(query);

我仍然对breezejs还是陌生的,所以现在我不知道我的错误是否在于使用breezejs或我的webaopi配置。 我已经尝试了很多东西,但是我似乎无法弄清楚我在做什么错。

我可能已经找到了解决方案。 首先,我不得不切换回odata v3。 事实证明breezejs / datajas尚未与v4兼容。

之后,我遇到了一条新的错误消息,说它无法读取null的“ end”。 也无法找到关于该消息的任何信息,因此进行了一些试验。 原来,我所有的模型类都在各自的文件夹中。 我为每个实体使用了不同的命名空间的说明。

从breezejs文档中:( http://www.getbreezenow.com/documentation/odata-server

如果您的模型类具有多个名称空间,则会陷入困境。 据我们所知,Web API OData无法处理位于多个名称空间中的模型类。

我将每个实体都放在同一文件夹中,以便它们都使用相同的名称空间和瞧! 现在,我终于可以使用odata与breezejs查询我的webapi!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM