【发布时间】:2013-07-02 18:18:46
【问题描述】:
我使用一种方法将 CORS 处理程序添加到客户端使用 Breeze 调用的响应中。
你可以在这里阅读更多关于我是如何工作的: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;
}
【问题讨论】:
标签: asp.net-web-api cors breeze