0

我是使用 WCF 的新手,到目前为止,我了解使用它创建 Web 服务的基本知识,但是我的一些方法有问题。

我的服务定义如下链接,我的 web.config 是这样。我的模型有 5 个实体,其中一个暂时与其余的无关,其他四个相互关联,我的模型看起来像这样。我有执行常规 CRUD 操作的端点,插入、更新或删除没有问题,但是当我尝试获取 Eventos、Regions、Clusters 和 Dispositivos 的列表时,该方法失败并且不返回任何内容。

有趣的是,如果我再次从我的模型生成数据库,重新启动服务并再次重新插入数据,我可以毫无问题地从端点获取数据。但是,如果我停止服务并重新启动它,那么它会再次失败。

这只发生在相关的四个实体上,Usuarios 的所有端点都可以正常工作,但对于其他 4 个,端点仅在我尝试检索所有条目或仅检索实体的一个条目时才会失败。如果我尝试从这些实体中的任何一个中插入、更新或删除条目,则没有问题,仅当我尝试获取条目列表或仅一个条目时才会出现问题。

例如,如果我尝试访问 url 127.0.0.1:81/SismosService.svc/region/index它在 Google Chrome 错误 324 (net::ERR_EMPTY_RESPONSE) 中返回,但127.0.0.1:81/SismosService不会发生这种情况.svc/usuario/index,该网址返回我期望的正确 JSON 对象,如下所示:

{"Meta":{"Method":"GetUsuarios","Status":"ok"},"Response":[{"ApellidoM":"Mendoza","ApellidoP":"Arvizu","CreatedDateTime":" /Date(1357947261710-0600)/","Nombre":"Uriel","密码":"uriel88","UpdatedDateTime":"/Date(1357947261710-0600)/","用户名":"uriel88"," UsuarioId":1},{"ApellidoM":"Mendoza2","ApellidoP":"Arvizu2","CreatedDateTime":"/Date(1357947273070-0600)/","Nombre":"Uriel2","Password": "auam","UpdatedDateTime":"/Date(1357947273070-0600)/","用户名":"auam","UsuarioId":2}]}

为什么这些端点会失败?

4

1 回答 1

0

这是由于尝试发送具有循环引用的对象引起的,因为 EF 为确定的实体创建对象,例如,如果您要发送 EntityA 类型的对象foo,该对象具有 EntityB 类型的属性,则该属性将具有一个属性EntityA 类型引用原始对象foo,这会创建一个循环引用,服务无法将其解析为 JSON。

我所做的如下:创建一个 EntityA 类型的新实例,并为它的每个属性分配您对foo对象感兴趣的值,将创建循环引用的对象保留为空。

于 2013-04-15T16:45:09.353 回答