У меня есть метод, который генерирует XML для созданного мною класса -getXML ().Это вызывается из следующих методов:
private void send_Response()
{
String xmlUrl = ((App)Application.Current).Resources["xmlUrl"].ToString();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(xmlUrl, UriKind.Absolute));
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
request.BeginGetRequestStream(new AsyncCallback(RequestReady), request);
}
void RequestReady(IAsyncResult asyncResult)
{
HttpWebRequest request = (HttpWebRequest)asyncResult.AsyncState;
Stream stream = request.EndGetRequestStream(asyncResult);
StreamWriter writer = new StreamWriter(stream);
writer.WriteLine("assessmentXml=" + assessment.getXML(testComplete));
writer.Flush();
writer.Close();
request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
}
void ResponseReady(IAsyncResult asyncResult)
{
HttpWebRequest request = asyncResult.AsyncState as HttpWebRequest;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asyncResult);
Stream s = response.GetResponseStream();
StreamReader sr = new StreamReader(s);
String line = "";
String Result = "";
line = sr.ReadLine();
while (line != null)
{
Result += line;
line = sr.ReadLine();
}
s.Close();
}
Сам getXML выглядит следующим образом:
public String getXML(bool end)
{
StringWriter output = new StringWriterWithEncoding(Encoding.UTF8);
XmlWriterSettings ws = new XmlWriterSettings();
ws.Indent = true;
ws.Encoding = new UTF8Encoding(true);
ws.ConformanceLevel = ConformanceLevel.Document;
using (XmlWriter writer = XmlWriter.Create(output, ws))
{
writer.WriteStartElement("root");
if (end)
{
writer.WriteAttributeString("testComplete", "true");
}
else
{
writer.WriteAttributeString("testComplete", "false");
}
for (int i = 0; i < theSections.Count(); i++)
{
writer.WriteStartElement("section");
writer.WriteAttributeString("id", theSections.ElementAt(i).Id.ToString());
writer.WriteAttributeString("title", theSections.ElementAt(i).Name.ToString());
writer.WriteAttributeString("completed", theSections.ElementAt(i).Completed.ToString());
for (int j = 0; j < theSections.ElementAt(i).Elements.Count(); j++)
{
writer.WriteStartElement(theSections.ElementAt(i).Elements.ElementAt(j).Name.ToString());
for (int a = 0; a < theSections.ElementAt(i).Elements.ElementAt(j).Attributes().Count(); a++)
{
writer.WriteAttributeString(theSections.ElementAt(i).Elements.ElementAt(j).Attributes().ElementAt(a).Name.ToString(), theSections.ElementAt(i).Elements.ElementAt(j).Attributes().ElementAt(a).Value);
}
for (int c = 0; c < theSections.ElementAt(i).Elements.ElementAt(j).Elements().Count(); c++)
{
writer.WriteStartElement(theSections.ElementAt(i).Elements.ElementAt(j).Elements().ElementAt(c).Name.ToString());
writer.WriteString(theSections.ElementAt(i).Elements.ElementAt(j).Elements().ElementAt(c).Value);
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndElement();
}
writer.WriteEndDocument();
writer.Flush();
writer.Close();
}
return output.ToString();
}
(извините за избыточные количества кода).
Thisвсе работает нормально, и я вижу вывод XML.Но теперь я хочу добавить еще немного кода в функцию getXML (), и Silverlight просто не позволит мне это сделать.Даже простой MessageBox.Show («что-то») не будет отображаться, и весь метод теперь не может генерировать какой-либо XML.Сказав это, в Visual Studio нет ошибок или предупреждений.
Я добавил новый код в другие области того же файла .cs, и все работает нормально, только в этом одном методе.Я пробовал перестраивать, но тоже безрезультатно, поэтому я не понимаю, как это могло быть.Это ошибка Visual Studio?
Заранее спасибо за любую помощь.