【发布时间】:2013-03-20 09:15:58
【问题描述】:
我知道,当使用流时,我需要刷新它,以便它会释放与流相关的所有资源,并且刷新流会获取尚未写入的任何缓冲数据,并立即将其写出。
p>我有以下课程:
[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;
}
}
【问题讨论】:
-
您如何将其作为回复发送?如果我正确阅读文档,
(new XmlSerializer(typeof(EventList))).Serialize(theResponse.OutputStream, eventList);应该可以解决问题... -
XmlRoot 与刷新流的问题是正交的;您没有显示任何与此相关的代码。但是,关闭流也会导致它被刷新。
-
@AKX 我正在发送响应 throw 常规返回语句,就像返回常规字符串一样
-
@MarcGravell 我不明白你的评论,我该如何关闭流?这是普通班
-
@DorCohen 问题中的代码与关闭、刷新等相关的任何内容都无关。您可能在某处有一些与 相关的代码到流。
标签: c# serialization xml-serialization flush xmlroot