2016-09-05 4 views
0

Я пытаюсь использовать BreezeJS с существующим сервером OData, который был реализован с использованием .NET System.Services.Data.DataService, Версия 4.0. Как кажется, BreezeJS выполняет запрос http OPTIONS для получения метаданных $, но сервер генерирует исключение NotImplemented. Когда я вручную запрашиваю $ метаданные с помощью http GET в браузере, я получаю метаданные в формате XML.

Есть ли способ настроить Breeze для использования http GET или мне нужно каким-то образом настроить сервер для поддержки http OPTIONS?

Любая помощь будет оценена по достоинству.

ответ

0

Запрос OPTIONS является частью CORS, как описано в this answer. Вам необходимо настроить сервер для поддержки CORS или не использовать запросы кросс-происхождения из браузера.

См. this answer и this answer относительно использования WCF с CORS. Кажется, рекомендуется перейти на веб-API.

+0

Это кажется правильным, но меня смущает. Бриз утверждает, что поддерживает OData V1/V2 («odata»), V3 («webApiOData»), а также V4 («webApiOdata4», предварительно, но документы могут быть устаревшими) с различными адаптерами. Ссылки, похоже, указывают на то, что Breeze не работает с V1/V2 (WCF DataServices) из-за отсутствия поддержки CORS, чего можно достичь только путем перехода на Web API. Однако это может быть ограничение как datajs, так и Odata на стороне сервера. – user1211286

+0

Поддержка CORS должна появиться на стороне сервера. Вам нужна поддержка CORS в вашем приложении? –

+0

Я даже не знал о КОРС, пока этот вопрос не поднялся. Сервер - это существующее программное обеспечение, работающее как служба Windows и предоставляющее odata на данном порту. На данный момент клиент с угловым/ветром разрабатывается и тестируется с использованием Lite-сервера, очевидно, на другом порту, но на той же машине. Любые намеки на то, что изменение настроек каким-то образом решает проблему? – user1211286