将XML文件保存到Silverlight中的Web项目时出现问题

时间:2011-02-18 21:20:59

标签: c# xml silverlight

我有一个应用程序,它读取XML文件以获取有关项目的信息,并在时间轴中显示它们。用户可以修改和添加项目,因此我想保存此XML文件。

我有一个显示数据的Silverlight应用程序,以及一个在其ClientBin文件夹中托管XML文件的Web项目。应用程序使用WebClient类获取XML文件:

WebClient dataSource = new WebClient();
dataSource.OpenReadCompleted += dataSource_OpenReadCompleted;
dataSource.OpenReadAsync(new Uri("ProjectData.xml", UriKind.Relative));

然后在dataSource_OpenReadCompleted方法中,它从e.Result对象获取流并将其读入我使用LINQ解析的XDocument对象。这很好。

现在我想将我的更改保存回Web项目。我已经准备好在XDocument对象中修改了XML ...而且我不确定如何回写。

有一个WebClient.OpenWriteAsync方法,但我不知道如何使用它。谷歌搜索没有给出任何明确的结果。

谢谢,

安德鲁

2 个答案:

答案 0 :(得分:0)

Silverlight代码在客户端运行,所以......

您可以尝试创建一个接受xml数据和文件名的Web服务。然后让该Web服务将文件写回文件系统。另外,请确保您对文件使用锁定,以便多个用户不会同时尝试写入该文件。

答案 1 :(得分:0)

感谢kurtnelle的建议,这也行得通。我想我会为那些偶然发现这个问题的人写出我的解决方案。

不能像使用OpenReadAsync一样使用OpenWriteAsync,因为出于安全原因,Silverlight无法直接写入文件系统。

我最终在Web项目中使用HTTPHandler方法。我创建了一个名为XMLHandler.ashx的文件,用于监听对webclient的调用。在Silverlight应用程序中,我使用Web项目的URI和xml文件作为数据字符串调用webclient.UploadStringAsync。当HTTPHandler听到此消息时,它会将其保存到客户端bin。它完美无缺!