我有一个应用程序,它读取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方法,但我不知道如何使用它。谷歌搜索没有给出任何明确的结果。
谢谢,
安德鲁
答案 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。它完美无缺!