通过WCF RIA服务将JSON从服务器传输到客户端

时间:2012-05-22 08:07:47

标签: json silverlight wcf-ria-services

我是Silverlight和WCF平台的新手。我想使用Silverlight客户端从服务器获取一些数据。该解决方案有一个WCF RIA服务类库,用于读取数据并将其序列化为JSON字符串,但我无法弄清楚如何创建数据请求,运行服务器方法并返回用于反序列化的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

}

但我无法理解正在发生的事情。请帮忙!

1 个答案:

答案 0 :(得分:0)

如果您使用的是RIA服务,则只需执行此操作:

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

现在你可以从Silverlight调用getLogs了。但你也可以使用:

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

这样,您可以返回列表而无需将其序列化为json。