在 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 中将响应下载为文本文件的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows Phone 和 Silverlight 中将 Image Feed 转换为 BitmapImage
使用 silverlight 4 和 c# 创建 CSV 下载