【问题标题】:Download response as text file in silverlight在 silverlight 中将响应下载为文本文件
【发布时间】:2016-11-16 21:42:08
【问题描述】:

我正在使用 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");
        }
    }
}

【问题讨论】:

  • 将 JSON 字符串写入文件?你应该可以做类似StreamWriter writer = new StreamWriter("file"); writer.WriteLine(response_data); writer.Close; 我希望的事情。
  • 我收到错误文件操作不允许..
  • 显示出现错误的代码。如果没有更多信息,我们无法为您提供帮助。
  • @Tim 代码已编辑并获得异常@ 带有文件名的 STreamWriter 的初始化

标签: c# json wcf silverlight


【解决方案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");
        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多