我在尝试查询我的 Web API OData 服务时遇到 400、404 或 405 错误。
我的远程服务名称配置为:
var remoteServiceName = 'http://localhost:50056/odata/';
在我的 entityManagerFactory 我有 Odata 集:
breeze.config.initializeAdapterInstance('dataService', 'webApiOData', true);
在我的数据上下文中,我正在调用:
var manager = entityManagerFactory.newManager();
return breeze.EntityQuery.from('Courses')
.using(manager).execute()
.then(success).catch(failed);
我目前收到错误:
XMLHttpRequest cannot load http://localhost:50056/odata/$metadata. No 'Access-Control-Allow-Origin' header is present on the requested resource
我可以在浏览器中很好地访问此路径。我找到了一些资源建议我需要在我的 web.config 中设置 httpProtocol,如下所示:
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="*" />
</customHeaders>
</httpProtocol>
但这只是给了我一个
XMLHttpRequest cannot load http://localhost:50056/odata/$metadata. The 'Access-Control-Allow-Origin' header contains multiple values
我还尝试从 IIS Express 的 applicationhost 配置文件中设置这些设置,但这给了我以下信息:
Invalid HTTP status code 400
我还听说将以下设置添加到 WebApiConfig 应该可以工作:
config.EnableCors();
但我没有看到任何效果,或者我尝试过:
var cors = new EnableCorsAttribute(origins: "*", headers: "*", methods: "*");
config.EnableCors(cors);
这也没有效果。由于我已经用尽了我在网上找到的所有资源,我看不出还有什么遗漏。
我正在使用 Visual Studio 2013 express 并使用 IIS express。