Я получаю сообщение об ошибке 400, 404 или 405 при попытке запросить мою службу OData веб-API.
Мое имя удаленной службы настроено на:
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
Я могу получить доступ к этому пути в браузере. Я нашел несколько ресурсов, предлагающих установить httpProtocol в моем файле web.config следующим образом:
<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, но это дает мне следующее:
Invalid HTTP status code 400
Я также слышал, что добавление следующего параметра в WebApiConfig должно работать:
config.EnableCors();
Но я не вижу эффекта, и в качестве альтернативы я пробовал:
var cors = new EnableCorsAttribute(origins: "*", headers: "*", methods: "*");
config.EnableCors(cors);
Что тоже не влияет. Я не вижу, что еще я мог упустить, поскольку я исчерпал все ресурсы, которые нашел в Интернете.
Я использую Visual Studio 2013 Express и IIS Express.
$.ajax({ type: "GET", url: "http://localhost:50056/odata/$metadata" }) .then(function() { alert( "Got data" ); }).catch(function(err) {alert("Failed: "+err.message)});
- person Ward   schedule 23.11.2014