2012-05-22 74 views
0

我是Silverlight和WCF平臺的新手。我想使用Silverlight客戶端從服務器獲取一些數據。該解決方案有一個WCF RIA服務類庫,用於讀取數據並將其序列化爲JSON字符串,但我無法弄清楚如何創建數據請求,運行服務器方法並返回JSON字符串進行Deserialization客戶端。通過WCF RIA服務將JSON從服務器傳輸到客戶端

我花了幾個小時尋找並沒有合理的解決方案。直到現在,我已經做到了這一點:

[WebInvoke(Method = "GET", 
      ResponseFormat = WebMessageFormat.Json, 
      UriTemplate = "data/{id}")] 
public string getLogs(string server) 
{ 
    EventLog[] remoteEventLogs = EventLog.GetEventLogs(System.Environment.MachineName); 

    ObservableCollection<string> logs = new ObservableCollection<string>(); 

    for (int i = 0; i < remoteEventLogs.Length; i++) 
    { 
     logs.Add(remoteEventLogs[i].Log); 
    } 

    return serializer(logs); //helper function using DataContractJsonSerializer 

} 

但我不能包裹我的頭圍繞發生了什麼。請任何幫助!

回答

0

如果您正在使用RIA服務,你只需要做到這一點:

[Invoke] 
public string getLogs(string server) 
{ 
    ... 
    return serializer(logs); 
} 

現在你可以調用從Silverlight中的getLogs。但你也可以使用:

[Invoke] 
public IEnumerable<string> getLogs(string server) 
{ 
    ... 
    return logs; 
} 

這樣,你返回的列表,而不必序列化到json。

+0

實際上,問題是我在同一VS解決方案中有一個Silverlight應用程序和一個WCF RIA服務庫,並且我想使用Service庫讀取事件日誌。那麼您是否知道如何將HTTP請求發送到WCF RIA服務的服務器端,然後讓客戶端和隨後的Silverlight應用程序接收事件日誌數據? – varagrawal

相關問題