【发布时间】:2015-08-09 14:41:10
【问题描述】:
我有以下控制器和动作。
[Route("/api/simple")]
public class SimpleController : Controller
{
[HttpGet]
[Route("test")]
public string Test()
{
return "test";
}
}
当我调用它时,我希望操作返回 "test"(这是有效的 JSON),但它返回 test(不带引号)这是一个有效的行为,还是错误?我错过了什么吗?
GET http://localhost:5793/api/simple/test HTTP/1.1
User-Agent: Fiddler
Host: localhost:5793
Accept: application/json
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Server: Microsoft-IIS/10.0
X-Powered-By: ASP.NET
Date: Sun, 09 Aug 2015 14:37:45 GMT
Content-Length: 4
test
注意:对于 ASP.NET Core 2.0+,这在请求中存在 Accept 标头时不适用 - 但如果 Accept 标头被省略并且发生内容协商,它仍然适用。
【问题讨论】:
-
如果您确实希望它返回引号使用转义序列,这是有效的行为:return "\"Test\"";
-
@BryanMudge 但是,我期待一个 json 输出。 'test' 不是一个有效的 JSON,例如,如果我返回一个对象,它会序列化该对象。
-
问题存在对象的双重序列化。但在这种情况下,它根本不序列化。
标签: asp.net-mvc asp.net-web-api asp.net-core