Я пишу пользовательский ActionFilterAttribute
и пытаюсь записать некоторые данные непосредственно в выходной поток в ASP.NET MVC 3. Все, что я пишу, - это все, что мне нужно, чтобы получить ответ, но после записи естьдополнительные данные после моих данных - представленный вид.Я пытаюсь закрыть OutputStream
, но он все еще остается доступным для записи.Как я могу закрыть этот поток для записи или игнорировать следующий рендеринг HTML?
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var request = filterContext.RequestContext.HttpContext.Request;
var acceptTypes = request.AcceptTypes ?? new string[] {};
var response = filterContext.HttpContext.Response;
if (acceptTypes.Contains("application/json"))
{
response.ContentType = "application/json";
Serializer.Serialize(data, response.ContentType, response.OutputStream);
}
else if (acceptTypes.Contains("text/xml"))
{
response.ContentType = "text/xml";
Serializer.Serialize(data, response.ContentType, response.OutputStream);
}
response.OutputStream.Close();
}
UPD
Например, мои данные {"Total": 42, "Now": 9000}
И мой взгляд такой
<div>
<span>The data that shouldn't be here</span>
</div>
В ответ я получаю
{"Total": 42, "Now": 9000}
<div>
<span>The data that shouldn't be here</span>
</div>
, и это не является действительным JSON, как вы можете видеть.Моя цель - отправить только JSON или XML