Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WCF终结点在重新启动服务后失败_Wcf_Web Services_Crud - Fatal编程技术网

WCF终结点在重新启动服务后失败

WCF终结点在重新启动服务后失败,wcf,web-services,crud,Wcf,Web Services,Crud,我是WCF的新手,到目前为止,我了解使用WCF创建web服务的基本方法,但我的一些方法有问题 我的服务定义如下,我的web.config类似于。我的模型有5个实体,其中一个暂时不与其他实体相关,其他四个实体之间是相关的,我的模型如下所示。我有一些端点可以执行通常的CRUD操作,插入、更新或删除都没有问题,但是当我试图获取Eventos、Regiones、Clusters和DispositiVO的列表时,该方法失败,并且没有返回任何内容 有趣的是,如果我再次从我的模型生成数据库,重新启动服务并再次

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

我的服务定义如下,我的web.config类似于。我的模型有5个实体,其中一个暂时不与其他实体相关,其他四个实体之间是相关的,我的模型如下所示。我有一些端点可以执行通常的CRUD操作,插入、更新或删除都没有问题,但是当我试图获取Eventos、Regiones、Clusters和DispositiVO的列表时,该方法失败,并且没有返回任何内容

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

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

例如,如果我尝试访问url127.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”,“usuarid”:1},{“ApellidoM”Mendoza2”,“ApellidoP”:“Arvizu2”,“createdDate”:“Arvizu2”;/createdDate”:(1357947273070-0600)/“,“Nombre”:“Uriel2”,“密码”:“auam”,“UpdateDateTime”:“/日期(1357947273070-0600)/”,“用户名”:“auam”,“USUARIID”:2}]}


为什么这些端点失败?

这是由于尝试使用循环引用发送对象造成的,因为EF为确定的实体创建对象,例如,如果要发送EntityA类型的对象foo(其属性类型为EntityB),则该属性将具有引用原始obj的EntityA类型的属性ect foo,这将创建一个循环引用,该引用不能被服务解析为JSON

我所做的是:创建EntityA类型的新实例,并将您感兴趣的来自foo对象的值分配给它的每个属性,将创建循环引用的对象保留为null