0

내 웹 API OData 서비스를 쿼리하려고 시도하는 중 400, 404 또는 405 오류가 발생합니다.Breezejs 웹 API OData 메서드가 허용되지 않습니다.

내 원격 서비스 이름으로 구성됩니다

breeze.config.initializeAdapterInstance('dataService', 'webApiOData', true); 

그리고

내 데이터 컨텍스트에 내가 부르고 :

var manager = entityManagerFactory.newManager(); 

    return breeze.EntityQuery.from('Courses') 
      .using(manager).execute() 
      .then(success).catch(failed); 

내가 내의 EntityManagerFactory에서

var remoteServiceName = 'http://localhost:50056/odata/'; 

나는 중 하나로, OData 설정 한 현재 오류가 발생하고 있습니다 :

XMLHttpRequest cannot load http://localhost:50056/odata/$metadata. No 'Access-Control-Allow-Origin' header is present on the requested resource 

브라우저에서이 경로에 액세스 할 수 있습니다.

<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 

나에게 준다 : 나는 다음과 같이 내 Web.config의에서 httpProtocol를 설정할 필요가 제안하는 몇 가지 자료를 발견했습니다 IIS 익스프레스의 applicationhost 설정 파일에서하지만 그 다음 나에게 제공합니다

Invalid HTTP status code 400 

은 또한 들었 그 작동합니다 WebApiConfig 설정을 다음과 같은 추가 :

을 16,
config.EnableCors(); 

는하지만 더 효과를 볼 수 없으며, 양자 택일 나는 시도했다 :도 효과가 없습니다

var cors = new EnableCorsAttribute(origins: "*", headers: "*", methods: "*"); 
config.EnableCors(cors); 

합니다. 나는 내가 온라인에서 찾은 모든 자료를 다 써 버렸기 때문에 내가 누락 될 수있는 것이 무엇인지 알지 못한다.

저는 Visual Studio 2013 Express를 사용하고 IIS express를 사용하고 있습니다.

+0

이것은 CORS 문제인 것처럼 보이지만 Breeze 문제는 아닙니다. 나는 당신이 당신이 그것을 가능하게했다고 말했고 당신처럼 보이지만 당신은 더 나은 증거가 필요합니다. 상대적으로 빠른 접근법 중 하나는 스크립트 태그가있는 HTML 페이지를 작성하는 것입니다. 스크립트 태그 안에는 OData 엔드 포인트에 대한 jQuery AJAX 호출이 있습니다. 성공적으로 리턴되면 콘솔에 기록하십시오. 그런 다음 개발 도구 (F12)를 열고 무슨 일이 진행되고 있는지 확인하십시오. – Ward

+0

'$ .ajax ({ 유형 : "GET", url : "http : // localhost : 50056/odata/$ metadata" }) 을 사용해보세요.catch (function (err) {alert ("Failed :"+ err.message)}); ' – Ward

+0

답장을 보내 주셔서 감사합니다. 그게 작동하지만 바람은 "No 'Access-Control-Allow-Origin'헤더가 요청 된 리소스에 있습니다." – socketman

답변

0

내 문제가 발견되었습니다. OData v4를 사용하고있었습니다. 분명히 datajs 아직 OData v4를 지원하지 않습니다. WebApiConfig에 다음 코드를 추가하면 더 부드럽게 처리됩니다.

var cors = new EnableCorsAttribute("*", "*", "*", "DataServiceVersion, MaxDataServiceVersion"); 
config.EnableCors(cors); 
1

Ahh. 현재 OData의 웹 API 구현에는 데이터 홀드 지연 (lagging data.js support)을 포함하여 포트 홀이 가득합니다.

저는 OData 팀과 연락을 취하며 조만간 진행할 수 있기를 기대합니다.

OData가 정말로 필요합니까? 열려있는 클라이언트를 지원해야하는 경우가 아니라면 Web Api를 사용하는 것이 좋습니다.

+0

Google Api OData 이행. 너 나 혼란스러워. 귀하의 질문은 Web API OData에 대한 참조로 시작됩니다. 이제 자바에 대해 이야기하고 있습니다. 클라이언트의 경우, 우리의 oob 데이터 서비스는 dataj의 기능에 의존합니다. FWIF, 그렇기 때문에 jQuery에서 CORS를 설정해도 효과가 없습니다. datajs는 자체 XHR을 수행합니다. 브라우저에서 CORS를 사용하려면 일반적으로 필요하지 않습니다 ... 이전 브라우저로 작업하지 않는 한. 더 많은 도움이 될 수 있도록 서버 및 대상 브라우저에 대해 더 많이 알아야합니다. – Ward

관련 문제