我使用一種方法將CORS處理程序添加到由客戶機使用Breeze調用的響應中。如何在CORS中使用Breeze IQueryable?
您可以瞭解更多關於如何我得到了在這裏工作:但是Controller not filtering data in Breeze query in DotNetNuke Module
,我注意到,雖然$篩選器的工作,$擴大和$選擇沒有。
所以我的問題是:我怎樣才能使用返回一個HttpResponseMessage類型,仍然使用微風(我需要這樣做的CORS)。
爲了證明這一點,我下載並改變了託多斯樣本:
原來的方法(作品)
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;
}
感謝病房,我一直在玩Todos List中的CORS示例 - 是否有任何理由說爲「CORS支持的全局消息處理程序(僅限開發)」 - 即。這只是一個免責聲明,或者我真的不應該在生產中使用這種方法(即使它工作正常?)。我最初的問題是試圖讓Breeze與DotNetNuke一起工作,這可能不允許我將代碼放在AppStart中,這就是爲什麼我想動態地添加Response Header的原因。今晚我會看看這一切,謝謝! – Rodney
ps - 我看到了即將到來的CORS在ASP.NET中的支持,並且耐心地等待着;)現在我明白了。 IQUeryable:所以核心標籤不支持擴展和選擇(因此不是一種選擇),而BreezeQueryable則是這樣,所以我需要使用這個 – Rodney
所有的作品都很棒,謝謝。我注意到的一件事是,當我用[NOTMAPPED]排除EF Code First中的屬性時,它反映在MetaData Controller調用中(不提及該字段),但IQueryable列表返回該屬性(但具有NULL值)。這對我來說似乎很陌生... – Rodney