- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 MVC 6 rc1 和 EF 7 rc 1 Code First 模型通过 Web API Controller 检索数据。我有 3 个类似于下面的表。
class Product
{
public int Id { get; set; }
public string SomeProperty { get; set; }
public virtual ICollection<Categorization> Categorizations { get; set; }
public DateTime SomeProperty2 { get; set; }
public string SomeProperty3 { get; set; }
public string SomeProperty4 { get; set; }
}
// NOTE: Entity key should be (ProductId, CategoryId)
class Categorization
{
public int ProductId { get; set; }
public Product Product { get; set; }
public int CategoryId { get; set; }
public Category Category { get; set; }
}
class Category
{
public int Id { get; set; }
public ICollection<Categorization> Categorizations { get; set; }
}
我的 Controller :
[ActionName("searchProducts")]
public IEnumerable<Product> searchProducts(string searchText,int? id)
{
var ret= db.Products
.Include(s => s.Categorizations).Take(2).ToList();
return ret;
}
下面是我的 Startup.cs ConfigureServices 部分。
services.AddMvc()
.AddJsonOptions(options=>
{
options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
options.SerializerSettings.MissingMemberHandling = Newtonsoft.Json.MissingMemberHandling.Ignore;
});
services.AddCors();
var connectionString = Configuration.GetSection("Data:DefaultConnection:ConnectionString").Value;
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ContractsContext>(options => options.UseSqlServer(connectionString));
services.AddSingleton(_ => Configuration);
services.AddSingleton<IContractRepository, ContractRepository>();
当我调用 api 时,我在 Fiddler 中收到错误消息“Chunked body did not terminate properly with 0-sized chunk”。在 fiddler 结果集中,我只看到预期结果集的第一个对象,其属性在分类填充之前没有,之后没有属性和剩余对象(不完整的 JSON 数据)。如果我不在结果集中包含分类,它工作得很好。我错过了什么吗?注意:EF 正在正确返回数据,但它在 api 调用中被分块,客户端无法完整读取数据。
最佳答案
发现问题。检测到类型为“Product”的属性“Product”的自引用循环。路径“[0].Categorizations[0]”。
因此,EF 填充了 Product 对象中的 Categorization 集合以及 Categorization 中的 Product 对象。因此,在序列化为 json 时,它变成了一个无限循环,例如:
产品>分类(eachCategorization - 产品>分类(eachCategorization - 产品>分类(eachCategorization - 产品>分类(....
解决方法:如下更改 Startup.cs ConfigureServices 部分
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
});
关于c# - Web Api (MVC 6) Chunked body 没有正确终止 0-sized chunk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34151065/
我正在尝试使用 Node js 服务将 .json 文件的内容获取到 angularjs 方法中。但是我得到以下错误: _http_outgoing.js:700 throw new ERR_INVA
我使用的是 npm 版本 6.0.1。我的操作系统是 macOS High Sierra 版本 10.13.3 我想构建我的项目,但收到此错误消息: Creating an optimized pro
import numpy as np from matplotlib import pyplot as plt import scipy.io.wavfile as wav from numpy.li
下面是一段c++代码: Chunk * _chunk = new (size) Chunk(size); 我不明白'new'后面的第一个'(size)',它是什么意思?以上代码来自JDK8。 最佳答案
我有一个 RSS 提要。当我在打开 Fiddler Web Debugger 的情况下浏览提要时,Fiddler 向我抛出此错误: Chunked body did not terminate pro
当我运行脚本 npm run watch 时出现此错误 cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --wat
我在尝试启动我的应用程序时看到以下错误... > css-modules@1.0.0 start /Users/johnnynolan/Repos/css-modules webpack && ope
我正在使用 MVC 6 rc1 和 EF 7 rc 1 Code First 模型通过 Web API Controller 检索数据。我有 3 个类似于下面的表。 class Product {
我在一个 txt 文件中有以下数据: 00001+++00001 000031 12.8600 -1 7 BEAR 1990052418 276.0
我正在试用 RestAssured 并编写了以下语句 - String URL = "http://XXXXXXXX"; Response result = given().
我在 RMarkdown 文档中有一个块,如下所示: ```{r, echo=-4} a <- 1 b <- 2 x <- a + b print(paste(c("`x` is equal to "
这个迭代器 let data = vec![0, 1, 2, 3, 4, 5]; for x in data.chunks(2) { println!("{:?}", x); } 会产生 [0
flock() 的 PHP 文档页面表明在IIS下使用不安全。如果我不能在所有情况下都依赖 flock,是否有其他方法可以安全地实现同样的目标? 最佳答案 在所有想象的可能情况下,没有其他方法可以安全
我正在开发一个 Android 示例应用程序,它从 http://www.omdbapi.com/ 获取电影列表. REST 服务是: http://www.omdbapi.com/?s=star&a
我正在寻找 MemoryStream 的实现,它不会将内存分配为一个大块,而是一组 block 。我想在内存(64 位)中存储几 GB 的数据,并避免内存碎片的限制。 最佳答案 像这样: class
我们有一个 React 应用程序,它使用 React.lazy 和 Suspend 进行代码拆分。每个星期二我们都会部署一个新版本,因此我们的 block 也会发生变化。 我们现在遇到的问题是,如果我
我对Laravel的ORM Eloquent chunk()方法有疑问。 它错过了一些结果。 这是一个测试查询: $destinataires = Destinataire::where('statu
我需要知道是否可以将 iTextSharp 中的两个 Chunk 组合起来 Phrase phrase = new Phrase(); var text1 = new Chunk("hello");
我正在使用播放框架来生成分块响应。代码是: class Test extends Controller { public static void chunk() throws Interrup
这个问题已经有答案了: Split array into chunks (80 个回答) 已关闭 5 年前。 我正在尝试在 JavaScript 中实现一个类似于 lodash chunk 的 blo
我是一名优秀的程序员,十分优秀!