Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net web api webapi控制器返回csv数据_Asp.net Web Api - Fatal编程技术网

Asp.net web api webapi控制器返回csv数据

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

我有一个webapi控制器代码,如下所示:

        [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”)
};