Asp.net web api webapi控制器返回csv数据
我有一个webapi控制器代码,如下所示:Asp.net web api webapi控制器返回csv数据,asp.net-web-api,Asp.net Web Api,我有一个webapi控制器代码,如下所示: [HttpPost] public HttpResponseMessage DownloadForms(FormCriteria criteria) { string downloadData = new FormsToCsvHelper(Umbraco, criteria).GetCsv(); return Request.CreateResponse(HttpStatusCode.OK
[HttpPost]
public HttpResponseMessage DownloadForms(FormCriteria criteria)
{
string downloadData = new FormsToCsvHelper(Umbraco, criteria).GetCsv();
return Request.CreateResponse(HttpStatusCode.OK, downloadData);
}
Created Date,IP,Form Name,Email address,Message,Full Name
"Created Date,IP,Form Name,Email address,Message,Full Name\r\n31/05/2019 10:43:08,127.0.0.1,Contact form - test,test12@hotmail.com,test,Ismail Mayat"
如果在发回调试器之前查看调试器中返回的数据,它看起来像:
[HttpPost]
public HttpResponseMessage DownloadForms(FormCriteria criteria)
{
string downloadData = new FormsToCsvHelper(Umbraco, criteria).GetCsv();
return Request.CreateResponse(HttpStatusCode.OK, downloadData);
}
Created Date,IP,Form Name,Email address,Message,Full Name
"Created Date,IP,Form Name,Email address,Message,Full Name\r\n31/05/2019 10:43:08,127.0.0.1,Contact form - test,test12@hotmail.com,test,Ismail Mayat"
2019年5月31日10:43:08127.0.0.1,联系方式-测试,test12@hotmail.com伊斯梅尔·玛亚特
若我复制并粘贴到文件中并保存为csv,它在excel中看起来很好
但是,我实际得到的数据如下所示:
[HttpPost]
public HttpResponseMessage DownloadForms(FormCriteria criteria)
{
string downloadData = new FormsToCsvHelper(Umbraco, criteria).GetCsv();
return Request.CreateResponse(HttpStatusCode.OK, downloadData);
}
Created Date,IP,Form Name,Email address,Message,Full Name
"Created Date,IP,Form Name,Email address,Message,Full Name\r\n31/05/2019 10:43:08,127.0.0.1,Contact form - test,test12@hotmail.com,test,Ismail Mayat"
整个记录集用引号包装,换行符被视为一个文本,因此在excel中打开文件时,它的所有内容都集中在一行上
有一个DelegatingHandler会触发,但这是针对特定url请求的,因此对于该请求,它不会执行任何操作
有人知道这是怎么回事吗?WebAPI默认情况下会将值序列化为JSON,这就是为什么您的值用双引号括起来的原因 要解决此问题,可以使用以下类:
返回新的HttpResponseMessage(statusCode){
内容=新的StringContent(下载数据,Encoding.UTF8,“text/csv”)
};