[英]Upgrading from .net core 1.1 to 2.0 changed [Produces(“application/json”)] behaviour
我已經將我們的項目從.net core 1.1升級到了2.0,除了控制器操作返回的字符串是Json文本之外,其他一切似乎都正常運行。 他們看着像是
[HttpGet]
[Produces("application/json")]
public IActionResult Get(string name)
{
var jsonStr = service.GetJsonStringFromDB();
return Ok(jsonStr);
}
我們有Json對象以文本形式存儲在Db中。 在舊項目中,我們的Angular服務會將其視為Json數據,然后將返回一個對象,在新項目中,我們的Angular服務會將其視為字符串,然后將其返回。 客戶端沒有任何變化。
這實際上是正確的行為。
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");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.