無法讓ASP.NET MVC 6 Controller返回JSON

asp.net-core-mvc asp.net-web-api c# entity-framework-core json

我有一個MVC 6項目,我正在使用Fiddler來測試Web API。如果我採取以下控制器操作,使用EntityFramework 7返回List。然後html將呈現正常。

[HttpGet("/")]
public IActionResult Index()
{
    var model = orderRepository.GetAll();

    return View(model);
}

但是當我嘗試返回Json響應時,我得到502錯誤。

[HttpGet("/")]
public IActionResult Index()
{
    var model = orderRepository.GetAll();

    return View(model);
}

關於為什麼對像沒有正確序列化為json的任何想法?

一般承認的答案

首先,您可以使用IEnumerable<Order>IEnumerable<object>作為返回類型而不是JsonResult並返回orderRepository.GetAll() 。我建議你閱讀這篇文章的附加信息。

關於Bad Gateway的另一個錯誤。嘗試將最新版本8.0.2中的Newtonsoft.Json添加到package.json依賴項並使用use

services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling =
            Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });

順便說一句,人們可以重現錯誤“HTTP錯誤502.3 - 錯誤的網關”,如果我只是在工作代碼的return語句上設置斷點並等待足夠長的話,你會描述它。因此,您很快就會在許多常見錯誤上看到錯誤“HTTP錯誤502.3 - 錯誤網關”。

您可以向我們考慮更有用的序列化選項。例如

services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling =
            Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因