Breeze を使用してクライアントから呼び出される応答に CORS ハンドラーを追加するメソッドを使用します。
ここでどのように機能するようになったかについて詳しく読むことができます: Controller not filtering data in Breeze query in DotNetNuke Module
ただし、$filter は機能しますが、$expand と $selectは機能しないことに気付きました。
したがって、私の質問は次のとおりです。HttpResponseMessage タイプを返し、Breeze を使用するにはどうすればよいですか (CORS でこれを行う必要があります)。
これを証明するために、Todos サンプルをダウンロードして変更しました。
オリジナルメソッド(作品)
http://example/api/todos/todos?$select=isdone
[HttpGet]
public IQueryable<TodoItem> Todos()
{
return _contextProvider.Context.Todos;
}
CORSラッパーを使用した私の方法(展開または選択しません)
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;
}