Breeze를 사용하여 클라이언트가 호출 한 응답에 CORS 처리기를 추가하는 방법을 사용합니다.Breeze IQueryable을 CORS와 함께 사용하는 방법?
당신은 내가 여기서 일하는 것을 얻었다 방법에 대한 자세한 읽을 수 있습니다 : Controller not filtering data in Breeze query in DotNetNuke Module
을 그러나, 나는 $ 필터 작품, $ 확장하면서 $ 그렇지 선택 것으로 나타났습니다합니다.
내 질문은 : 어떻게 사용할 수있는 HttpResponseMessage 형식 여전히 CORBA 위해이 작업을 수행 할 필요가 Breeze 사용하십시오.
는 이것을 증명하기 위해, 나는 다운로드하여 왜 그렇게 샘플을 변경 :
기존 방법 (작품) CORS 래퍼 나의 방법은 (확장하거나 선택하지 않는
[HttpGet] public IQueryable<TodoItem> Todos() { return _contextProvider.Context.Todos; }
http://example/api/todos/todos?$select=isdone
)
http://example/api/todos/TodosCors?$select=isdone
[HttpGet]
[Queryable(AllowedQueryOptions = AllowedQueryOptions.All)]
public HttpResponseMessage TodosCors()
{
var response = Request.CreateResponse(HttpStatusCode.OK, (IQueryable<TodoItem>)_contextProvider.Context.Todos);
return ControllerUtilities.GetResponseWithCorsHeader(response);
}
public static HttpResponseMessage GetResponseWithCorsHeader(HttpResponseMessage response)
{
response.Headers.Add("Access-Control-Allow-Origin", "*");
return response;
}
감사합니다. 저는 Todos 목록에서 CORS 샘플을 가지고 놀았습니다. "CORS 지원을위한 전체 메시지 처리기 (개발 전용)"즉, 이유가 무엇입니까? 그건 단지 면책 조항입니까? 아니면 실제로이 방법을 프로덕션에서 사용하지 않아야합니까? 저의 원래 문제는 Breeze가 AppStart에 코드를 넣을 수없는 dith DotNetNuke를 사용하려고 시도했기 때문에 Response Header를 즉시 추가하는 것입니다. 오늘 밤 내내 이것 좀 보겠습니다. 고마워요! – Rodney
ps - ASP.NET에서 다가오는 CORS 지원을 보았고 참을성있게 기다리고 있습니다.) 이제는 더 잘 이해합니다. Iqueryable : 따라서 코어 태그는 BreezeQueryable과 달리 확장 및 선택을 지원하지 않으므로 (따라서 옵션이 아님)이 태그를 사용해야합니다. – Rodney
모든 작품이 훌륭합니다. 내가 주목 한 한 가지는 [NOTMAPPED]로 EF Code First의 속성을 제외하면 MetaData Controller 호출 (해당 필드에 대한 언급 없음)에 반영되지만 IQueryable 목록은 속성을 반환하지만 NULL 값을가집니다. 이것은 나에게 이상한 것 같습니다 ... – Rodney