2017-05-30 109 views
2

我正在研究AspNetCore中的web应用程序,并试图通过ajax调用从我的控制器获取数据。Ajax获取返回ERR_SPDY_PROTOCOL_ERROR

这里是我的API:

[HttpGet] 
    public async Task<IActionResult> GetPackWithAllCards(int? packId) 
    { 
     if (packId == null) 
     { 
      return Json("An error has occured"); 
     } 
     else 
     { 
      var pack = await _context.Packs 
      .Include(p => p.TagPacks) 
      .ThenInclude(tp => tp.Tag) 
      .Include(p => p.CardPacks) 
      .ThenInclude(cp => cp.Card) 
      .ThenInclude(c => c.FaceCards) 
      .ThenInclude(fc => fc.Face) 
      .ThenInclude(fc => fc.Template) 
      .Include(p => p.CardPacks) 
      .ThenInclude(cp => cp.Card.FaceCards) 
      .ThenInclude(fc => fc.Face.Image) 
      .Include(p => p.CardPacks) 
      .ThenInclude(cp => cp.Card.FaceCards) 
      .ThenInclude(fc => fc.Face.Sound) 
      .SingleOrDefaultAsync(m => m.PackId == packId); 
      if (pack == null) 
      { 
       return Json("An error has occured"); 
      } 
      return Ok(pack); 
     } 
    } 

和我的Ajax调用:

$.get("/pack/GetPackWithAllCards", { packId: pack.packId }, function (pack) { 
     alert(pack); 
}); 

我的错误是百达一样的,我得到 “无法加载资源:净:: ERR_SPDY_PROTOCOL_ERROR” 与状态= 0

我的api正确地返回一个包,但我的ajax调用没有得到它。

+0

遇到此链接,可能会有帮助:https://www.techsupportall.com/fix-err_spdy_protocol_error-permanently/和https://zenguard.zendesk.com/hc/en-us/articles/204423722-Chrome -error-ERR-SPDY-PROTOCOL-ERROR- –

+0

它不起作用 – Elykx

回答

1

这是JSON序列化中的错误。请参阅文档https://docs.microsoft.com/en-us/ef/core/querying/related-data#related-data-and-serialization

基于github:https://github.com/aspnet/EntityFrameworkCore/issues/9573。 我发现它只能部分解决我的问题。删除模型中没有必要的参考修复了问题。

+0

链接繁多的答案不适用于此网站,因为它们有保证腐烂。所以随着时间的推移它会变得不那么有用你能引用相关部分来更清楚地解释你的答案吗? – jdv

0

我刚碰到这个错误。原因是JSON的序列化错误。

检查您的Packs类和子类是否具有访问器,这些访问器可以在未填充所有子类时创建未引发实例异常的对象引用。

例子:

public class SaveStatus 
{ 
    public bool Success 
    { 
    get 
    { 
     return ValidationErrors.Count == 0; 
    } 
    } 
    public List<ValidationError> ValidationErrors { get; set; } 
} 

在这种情况下,如果不填充列表ValidationErrors那么JSON将无法序列化的成功访问触发问题的错误。