0
我目前正在开发一个MediaTypeFormatter来处理来自Web Api控制器的csv文件。如何添加 contentHeaders.Add(“content-disposition”,“attachment; filename = filename.csv”);如何使用MediaTypeFormatter覆盖ASP.NET Web Api中的响应头
截至目前,我有以下代码,但内容处置标题被忽略。我想提供一个链接,向用户显示save dialod。例如。/api/students?格式= csv
public class ServiceStackCSVFormatter : MediaTypeFormatter
{
public ServiceStackCSVFormatter()
{
//this.AddQueryStringMapping("format","csv", "text/csv");
this.AddQueryStringMapping("format", "csv", "text/html");
SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/csv"));
}
public override bool CanWriteType(Type type)
{
if (type == null)
throw new ArgumentNullException("type");
return true;
}
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
{
content.Headers.Clear();
content.Headers.Add("content-disposition", "attachment; filename=result.csv");
var task = Task.Factory.StartNew(() => CsvSerializer.SerializeToStream(value, writeStream));
return task;
}
public override Task<object> ReadFromStreamAsync(Type type, Stream readStream, System.Net.Http.HttpContent content, IFormatterLogger formatterLogger)
{
var task = Task<object>.Factory.StartNew(() => CsvSerializer.DeserializeFromStream(type, readStream));
return task;
}
public override bool CanReadType(Type type)
{
return true;
}
}
谢谢!有效! –