2013-03-20 4 views
0

Я знаю, что при использовании потока мне нужно очистить его, чтобы он освобождал любые ресурсы, связанные с потоком, и поток потока удалял любые буферизованные данные, которые еще не были написаны, и сразу записывает их.Нужно ли скрывать при использовании класса XmlRootAttribute?

У меня есть следующий класс:

[XmlRoot("EventList")] 
public class EventList 
{ 
    private List<BaseEvent> events_ = new List<BaseEvent>(); 
    /// Default constructor. Required for serialization 
    public EventList() {} 

    [XmlElement(ElementName = "Event")] 
    public List<BaseEvent> Events 
    { 
     get 
     { 
      return events_; 
     } 
     set 
     { 
      events_ = value; 
     } 
    } 
} 

Теперь прежде чем отправить его в качестве ответа на HTTPRequest мне нужно очистить его? если да, то как я могу?

Я спрашиваю, потому что у меня есть проблемы, которые описаны здесь: AJAX response - XmlHttp.responseXML is cut off

Метода активироваться Js клиентом:

[WebMethod] 
public EventsRequestResult GetEvents(string agentId, int delayedReturnMS) 

// EventsRequestResult - return value of the GetEvents method of the EventsService. 
public class EventsRequestResult 
{ 
    private EventList events_ = null; 
    /// <summary> 
    /// List of the events 
    /// </summary> 
    [XmlElement(ElementName = "Events")] 
    public EventList Events 
    { 
     get 
     { 
      return events_; 
     } 
     set 
     { 
      events_ = value; 
     } 
    } 
    /// Default constructor. 
    public EventsRequestResult(){} 
    /// <summary> 
    /// Constructor used in case of the failure. 
    /// </summary> 
    /// <param name="errorCode">Numeric error code</param> 
    /// <param name="errorDescription">Human readable error description</param> 
    public EventsRequestResult(RequestErrorCode errorCode, string errorDescription) : base(errorCode, errorDescription){} 
    /// <summary> 
    /// Constructor used in case of successful events request. 
    /// </summary> 
    /// <param name="events">List of the events</param> 
    public EventsRequestResult(EventList events) : base() 
    { 
     events_ = events; 
    } 
} 
+0

Как вы отправляете его в качестве ответа? '(новый XmlSerializer (typeof (EventList))). Serialize (theResponse.OutputStream, eventList);' должен делать трюк, если я читаю документы правильно ... – AKX

+0

XmlRoot ортогонален вопросу о потоке потока; вы не показываете какой-либо код, который имеет отношение к этому. Тем не менее, * закрытие * поток также приведет к его очистке. –

+0

@AKX Я отправляю ответный запрос регулярного возвращения ответа точно так же, как возвращающ регулярную строку –

ответ

0

Марка право в своем комментарии выше, но я думаю, что вы «ищу что-то вроде

using(var stream = theResponse.OutputStream) 
    { 
     var ser = new XmlSerializer(typeof(EventList)); 
     return ser.Deserialize(stream) as EventList; 
    } 

return изнутри с помощью блока закроется (заподлицо) поток.

Смежные вопросы