こんにちは。その呼び出しで、xmlを指定されたファイルに(文字列パラメーターを介して)保存します。テキストをxml文字列にキャプチャするコードは、正常に機能しているようで(デバッグ時に変数に表示される内容に基づく)、次のようになります。
private void ServerInfoNext_Click(object sender, RoutedEventArgs e)
{
//new RegisterServerGroupObject instance
RegisterServerGroupObject groupInfo= new RegisterServerGroupObject(groupNameTB.Text,1,parentServerNameTB.Text,LeaderNameCB.SelectedItem.ToString());
var serializer = new XmlSerializer(typeof(RegisterServerGroupObject));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
XmlWriterSettings settings = new XmlWriterSettings();
settings.Encoding = Encoding.UTF8;
settings.Indent = true;
settings.CloseOutput = true;
StringBuilder sb = new StringBuilder();
using (XmlWriter writer = XmlWriter.Create(sb,settings))
{
serializer.Serialize(writer, groupInfo);
writer.Close();
}
//sb now contains the xml string with the information from the serialized class
string contentsString = sb.ToString();
//create instance of XmlWrite service
XMLWriteServiceClient xmlClient = new XMLWriteServiceClient();
xmlClient.WriteXmlToServerCompleted += new EventHandler<System.ComponentModel.AsyncCompletedEventArgs>(xmlClient_WriteXmlToServerCompleted);
xmlClient.WriteXmlToServerAsync("ServerGroups.xml", contentsString);
}
この時点で、変数の内容の文字列がサービスメソッドに渡されると、有効なxmlがあり、サービスメソッド自体の中に次のようになっていることがわかります。
public class XMLWriteService : IXMLWriteService
{
public void WriteXmlToServer(string filename,string xmlString)
{
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(xmlString.ToString());
try
{
xDoc.Save(filename);
}
catch (FileNotFoundException e)
{
Console.WriteLine(e.InnerException.ToString());
}
}
}
try / catchブロックは、file( "ServerGroups.xml")が見つからないことを示していません。現在、プロジェクトのサーバー側部分のClientBinにそのxmlファイルがあります。(.Web側)。ただし、メソッドが終了した後、ファイルに書き込まれる新しいxmlはありません。誰かが私が間違っていることを教えてもらえますか?XmlDocumentクラスインスタンスがその内容をファイルに保存しない理由がわかりません。前もって感謝します!