【问题标题】:WCF Endpoints fail after restarting the service重新启动服务后 WCF 终结点失败
【发布时间】:2013-04-16 00:45:09
【问题描述】:

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

我的服务定义如下 link,我的 web.config 类似于 this。我的模型有 5 个实体,其中一个暂时与其余的无关,其他四个相互关联,我的模型看起来像 this。我有执行常规 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 不会发生这种情况,该 url 会返回我期望的正确 JSON 对象,如下所示:

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

为什么这些端点会失败?

【问题讨论】:

    标签: wcf web-services crud


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 2013-11-20
      相关资源
      最近更新 更多