首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将.NET MVC模型作为JSON返回到不好的网关中

将.NET MVC模型作为JSON返回到不好的网关中
EN

Stack Overflow用户
提问于 2016-07-26 12:43:17
回答 2查看 370关注 0票数 0

我已经从.NET web应用程序模板创建了一个Web应用程序。这个应用程序应该显示英雄和他们的超能力。

这是我的控制器方法:

代码语言:javascript
复制
public IActionResult GetHero(int id)
    {
        if (!ModelState.IsValid)
        {
            return HttpBadRequest(ModelState);
        }

        Hero hero = _context.Hero.Include(m => m.SuperPowers).Single(m => m.Id == id);

        if (hero == null)
        {
            return HttpNotFound();
        }

        return Json(hero);
    }

这是我的模型

代码语言:javascript
复制
public class Hero
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public virtual ICollection<SuperPower> SuperPowers { get; set; }
}

如果我用

代码语言:javascript
复制
return Json(hero);

就像上面的控制器代码一样,我得到了一个“坏网关”错误,但是如果我使用

代码语言:javascript
复制
return View(hero);

我可以在我创造的视图中展示英雄和相关的超级力量。

我做错了什么?

EN

回答 2

Stack Overflow用户

发布于 2016-07-26 12:49:49

尝试:

代码语言:javascript
复制
return Json(hero, JsonRequestBehavior.AllowGet);

有关这一点重要的原因,请参见this answer。默认情况下,拒绝GET请求:

默认情况下,JSON框架不允许您使用ASP.NET有效负载响应HTTP请求。如果您需要发送响应于GET的JSON,则需要使用JsonRequestBehavior.AllowGet作为Json方法的第二个参数,从而显式地允许这种行为。但是,恶意用户有可能通过称为JSON劫持的进程访问JSON有效负载。您不希望在GET请求中使用JSON返回敏感信息。有关更多细节,请参见菲尔在http://haacked.com/archive/2009/06/24/json-hijacking.aspx/上的帖子。

票数 2
EN

Stack Overflow用户

发布于 2016-07-26 13:01:43

你试过这个吗?

代码语言:javascript
复制
services.AddMvc()
    .AddJsonOptions(options => {
        options.SerializerSettings.ReferenceLoopHandling =
            Newtonsoft.Json.ReferenceLoopHandling.Ignore;
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38590243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档