【发布时间】:2015-01-28 19:05:39
【问题描述】:
我正在尝试在我的 webapi 上启用 CORS,以便我可以从另一个项目中使用它使用轻风js。 在我的 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 时,我得到了正确的 xml,其中包含上面配置的 EDM 模型数据。
从我的 webproject 中使用带有 Firefox 的breathjs,但是当它尝试查询 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);
我还是新手,所以现在我不知道我的错误是在使用轻风还是我的 webaopi 配置。我已经尝试了很多东西,但我似乎无法弄清楚我做错了什么。
【问题讨论】:
标签: c# asp.net-web-api cors odata breeze