2011-04-07 25 views
0

看看下面的代码(这是Silverlight应用程序的一部分):问题从Silverlight应用程序写入文件

SaveFileDialog dialog = new SaveFileDialog(); 
dialog.Filter = "JSON Files|*.json|All Files (*.*)|*.*"; 
dialog.DefaultExt = "json"; 
if (dialog.ShowDialog() == true) { 
    string filename = dialog.SafeFileName; 
    System.IO.StreamWriter sw = 
     new System.IO.StreamWriter(new FileStream(filename,FileMode.Create)); 
    sw.Write("string"); 
    sw.Flush(); 
    sw.Close(); 
} 

它的工作原理(创建文件,并把“串”在那里)开发机器上,但在我的机器上什么都不做,文件根本就没有创建。

任何想法是什么?!先谢谢你!

P.S.我们尝试删除sw.Flush();,这并没有帮助。此外,我们尝试将autoflush设置为true - 也没有帮助。将FileMode.Create更改为FileMode.Append也没有效果。

回答

2

这是一个安全问题,您需要使用SaveFileDialog返回的文件流。用它来打开流并写入。

SaveFileDialog.OpenFile()

+0

HM,为什么那么这是所有开发人员的机器就OK了? – Eugeny89 2011-04-07 13:44:23

+0

@ Eugeny89因为你拥有这个过程。您正在使用cassini内置网络服务器进行调试。如果您将它发布到本地计算机上的IIS,它将停止工作。 – NKCSS 2011-04-07 13:46:04

+0

我已经删除了我的答案,因为您是正确的,它们位于不同的命名空间中,您已将您的答案中的窗体窗体命名空间链接到了该窗体中,从而将我从气味中移除。 – BenCr 2011-04-07 14:00:47

3

试试这个:

 SaveFileDialog dialog = new SaveFileDialog(); 
     dialog.Filter = "JSON Files|*.json|All Files (*.*)|*.*"; 
     dialog.DefaultExt = "json"; 
     if (dialog.ShowDialog() == true) { 
      System.IO.StreamWriter sw = new System.IO.StreamWriter((Stream)dialog.OpenFile()); 
      sw.Write("string"); 
      sw.Close(); 
     }