我目前有一個WCF數據服務,生活在www.mywebsite.com
。這是一個基本的服務,看起來像這樣:如何使JCF中的WCF數據服務查詢攔截器返回結果?
namespace MyWeb
{
[JSONPSupportBehavior]
public class MyDataService : DataService<MyEntities>
{
public static void InitializeService(IDataServiceConfiguration config)
{
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("Entities", EntitySetRights.AllRead);
ServiceOperationRights.All);
}
}
}
目前,我們有活的客戶在野外,通過張貼ajax調用如這些提出要求:
$.ajax({
url: serverAddress + "MyDataService.svc/Entities?$top=20&$filter=IsConfirmed%20eq%20null&$format=json&$callback=?",
headers: {
version: "1.0",
platform: "a platform"
},
timeout: 12000,
dataType: 'jsonp',
cache: false,
context: document.body
})
可正常工作,返回Entities表中包含所需對象的JavaScript對象。
但是,我們想在服務器端添加一些智能,以限制此查詢返回的結果。爲此,我曾試圖在上述MyDataService
類來實現查詢攔截器:
[QueryInterceptor("Entities")]
public IQueryable<Entity> OnQueryFares(IQueryable<Entity> query)
{
return from e in query
where DataCheck(e)
select e;
}
與預期的邏輯是,該服務將現在只返回其DataCheck(E)的計算結果爲真表項。此功能似乎工作。然而,與客戶端進行測試時,我得到以下錯誤:
Web Console(4448): Uncaught SyntaxError: Unexpected token < at
http://www.mywebsite.com/MyDataService.svc/Entities?$top=20&$filter=IsConfirmed%20eq%20null&$format=json&$callback=jQuery17207441281890496612_1340223164872&_=1340223166622:1
此特定錯誤,導致我猜測,出於某種原因,從查詢檢查返回的數據,我實行的是在XML來了,而不是像我在實現攔截器之前查詢那樣使用JSON。
我一直沒有找到任何指示。我如何在查詢攔截器中執行JSON響應行爲?
你用過提琴手追查請求和響應? – softveda
@Pratik Fiddler似乎認爲有問題的客戶端是臺式電腦,但事實並非如此。 – pdusen