我已将项目从.net核心1.1升级到2.0,除了返回Json文本字符串的控制器操作外,一切似乎都正常。他们看起来像
[HttpGet]
[Produces("application/json")]
public IActionResult Get(string name)
{
var jsonStr = service.GetJsonStringFromDB();
return Ok(jsonStr);
}
我们将Jb对象存储在Db中作为文本。在旧项目中,我们的角度服务会将此视为Json数据并且我们将获得一个对象,在新项目中我们的Angular服务将其视为字符串并且我们得到一个字符串。客户端没有任何改变。
答案 0 :(得分:2)
这实际上是正确的行为。
Ok
是围绕OkObjectResult
的辅助方法(实际上,从ObjectResult
继承的所有结果都会尝试将其反序列化为已配置的类型,具体取决于注册的序列化程序和响应类型客户端请求等),序列化输入。
如果要返回原始字符串,请改用Content
。
[HttpGet]
[Produces("application/json")]
public IActionResult Get(string name)
{
var jsonStr = service.GetJsonStringFromDB();
return Content(jsonStr);
// Alternatively, pass the type here
//return Content(jsonStr, "application/json");
}