重新启动服务后WCF端点失败

时间:2013-01-15 21:51:04

标签: wcf web-services crud

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

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

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

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

例如,如果我尝试访问网址 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 上,该url会返回正确的JSON对象,我希望它看起来像这样:

{ “元”:{ “方法”: “GetUsuarios”, “状态”: “OK”}, “响应”:[{ “ApellidoM”: “门多萨”, “ApellidoP”: “Arvizu”,“CreatedDateTime “:”/日期(1357947261710-0600)/ “ ”农布雷“: ”乌列“, ”密码“: ”uriel88“, ”UpdatedDateTime“: ”/日期(1357947261710-0600)/“, ”用户名“:” uriel88 “ ”UsuarioId“:1},{ ”ApellidoM“: ”Mendoza2“, ”ApellidoP“: ”Arvizu2“, ”CreatedDateTime“: ”/日期(1357947273070-0600)/“, ”农布雷“: ”Uriel2“,”密码 “:” auam”, “UpdatedDateTime”: “/日期(1357947273070-0600)/”, “用户名”: “auam”, “UsuarioId”:2}]}

为什么这些端点失败?

1 个答案:

答案 0 :(得分:0)

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

我所做的是以下内容:创建EntityA类型的新实例,并为其每个属性分配您对 foo 对象感兴趣的值,留下创建循环的对象引用为null。