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 を使用しています。