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

Posted

技术标签:

【中文标题】在 silverlight 中将响应下载为文本文件【英文标题】:Download response as text file in 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 的初始化 【参考方案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");
        
    

【讨论】:

以上是关于在 silverlight 中将响应下载为文本文件的主要内容,如果未能解决你的问题,请参考以下文章

从网页写入本地磁盘

需要在javascript中将二进制文件下载为excel

在 Windows Phone 和 Silverlight 中将 Image Feed 转换为 BitmapImage

使用 silverlight 4 和 c# 创建 CSV 下载

如何在silverlight中将子元素的宽度绑定到父元素的宽度

如何在 Retrofit 库中将 YAML 响应正文解析为 POJO?