我有一个 webapi 控制器代码如下:
\n\n [HttpPost]\n public HttpResponseMessage DownloadForms(FormCriteria criteria)\n {\n string downloadData = new FormsToCsvHelper(Umbraco, criteria).GetCsv();\n return Request.CreateResponse(HttpStatusCode.OK, downloadData);\n }\nRun Code Online (Sandbox Code Playgroud)\n\n如果我在发送回调试器之前查看调试器中返回的数据,它看起来像:
\n\nCreated Date,IP,Form Name,Email address,Message,Full Name\nRun Code Online (Sandbox Code Playgroud)\n\n31/05/2019 10:43:08,127.0.0.1,联系表 - 测试,test12@hotmail.com,测试,Ismail Mayat
\n\n如果我将其复制并粘贴到文件中并另存为 csv,它在 Excel 中看起来很好。
\n\n然而我实际得到的数据看起来像:
\n\n"\xef\xbb\xbfCreated 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"\nRun Code Online (Sandbox Code Playgroud)\n\n整个记录集用引号括起来,换行符被视为文字,因此在 Excel 中打开文件时,所有记录都在一行中。
\n\n有一个 DelegatingHandler 会触发,但那是针对特定的 url 请求,因此对于该请求它不会执行任何操作。
\n\n有人知道发生了什么事吗?
\n小智 5
默认情况下,WebAPI 会将值序列化为 JSON,因此这就是您的值用双引号引起来的原因。
为了解决这个问题,您可以使用StringContent类:
return new HttpResponseMessage(statusCode) {
Content = new StringContent(downloadData, Encoding.UTF8, "text/csv")
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1695 次 |
| 最近记录: |