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