在silverlight中将响应下载为文本文件

时间:2016-07-14 05:43:21

标签: c# json wcf silverlight

我正在使用Silverlight应用程序,并且应用程序访问WCF服务中的一个端点,输出数据格式为字符串[作为json文件]

现在我要做的是将数据作为JSON文件提供给最终用户[作为文本文件]我该怎么做

目前我正在调用我的wcf服务

webservice.get_Export_ClassWiseCompleted += new EventHandler<get_Export_ClassWiseCompletedEventArgs>(webservice_get_Export_ClassWiseCompleted);

webservice.get_Export_ClassWiseAsync(class_id); //call wcf service async


void webservice_get_Export_ClassWiseCompleted(object sender, get_Export_ClassWiseCompletedEventArgs e)
{
    if (e.Error != null)
    {
        MessageBox.Show((string)e.Error.InnerException.Message);
    }
    else
    {
        if (e.Result != null)
        {
            string response_data = (string)e.Result; //write this  data to text file
                     StreamWriter writer = new StreamWriter("file.txt"); 
                    writer.WriteLine(response_data);
                    writer.Close();
        }
        else
        {
            MessageBox.Show("NO result");
        }
    }
}

1 个答案:

答案 0 :(得分:1)

出于安全原因,如果没有保存文件对话框,Silverlight将不允许您保存,因为它正在沙盒中执行。

void webservice_get_Export_ClassWiseCompleted(object sender, get_Export_ClassWiseCompletedEventArgs e) {
    if (e.Error != null) {
        MessageBox.Show((string)e.Error.InnerException.Message);
    } else {
        if (e.Result != null) {
            SaveFileDialog sfd = new SaveFileDialog() {
                DefaultExt = "txt",
                Filter = "Text Files (*.txt)|*.txt|All files(*.*)|*.*",
                FilterIndex = 1,
                DefaultFileName = "file"
            };
            if (sfd.ShowDialog() == true) {
                string response_data = (string)e.Result; //write this  data to text file
                using(Stream stream = sfd.OpenFile()) {
                    using(StreamWriter writer = new StreamWriter(stream)) { 
                        writer.Write(response_data);
                    }
                }
            }
        } else {
            MessageBox.Show("NO result");
        }
    }
}