2011-08-03 8 views
0

Silverlightアプリケーション内にアプリケーション設定を含むXMLファイルがあり、実行時に編集されます。これまで私はアプリケーションにデシリアライズできましたが、XDocumentに加えた変更は保存できません。ここで私が使用しているコードです。System.NotSupportedException XDocument.Save

private XElement _targetRoot; 
private XDocument _doc; 
private Stream _stream; 

private void LoadXmlFile() 
{ 
    WebClient xmlClient = new WebClient(); 
    xmlClient.OpenReadCompleted += XMLFileLoaded; 
    xmlClient.OpenReadAsync(new Uri(_fileName, UriKind.Relative)); 
} 

private void XMLFileLoaded(object sender, OpenReadCompletedEventArgs e) 
{ 
    if (e.Error != null) 
    { 
    return; 
    } 
    _stream = e.Result; 
    _doc = XDocument.Load(_stream); 
    deserializeScenarioList(_doc.Root.Element("scenes")); 
} 

その後、私はノードオフ要素を削除してから

_doc.save(_stream) 

を経由して保存しようと、いつでも私はSystem.NotSupportedExceptionを取得します。

+0

タイトルに「XML:」などのプレフィックスを付けないでください。これは[SO]にタグを付けたものです。 –

答えて

1

ストリームは単方向ストリームのみです。この場合、サーバーから(Silverlight)クライアントへのストリームです。

変更をサーバーに保存するには、Webアプリケーションは、Silverlightコントロールがファイルを転送するために呼び出すことができるエンドポイントを公開する必要があります。 WebアプリケーションにASMX Webサービスを追加する場合(WCFエンドポイントとRESTエンドポイントももちろん可能です)、これを行う簡単な方法です。

+0

どこに変更を加えたいですか?更新されたファイルを受信し、必要な場所に配置するサーバー上にエンドポイント(Webサービス、RESTエンドポイントなど)が必要です。 –

+0

理想的には、ランタイム中の各変更が非常に小さくなる(アプリケーション "管理者"のみがこの機能を持つ)ため、ファイルを上書きするのが理想です。現在、ファイルはSilverlight .webプロジェクトのClientBinフォルダにあります。 –

関連する問題