Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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_Entity Framework_Iis_Entity Framework 4 - Fatal编程技术网

Wcf 升级到测试环境时出现“实体容器必须唯一”错误

Wcf 升级到测试环境时出现“实体容器必须唯一”错误,wcf,entity-framework,iis,entity-framework-4,Wcf,Entity Framework,Iis,Entity Framework 4,我有一个解决方案WCF服务,其中包含许多实体框架模块。每个dll的命名都不同 当我和我的同事在本地运行时,一切正常。当我们运行自动构建并将文件复制到Dev服务器时,一切正常 但是,当我们将文件复制到测试服务器时,我得到一个错误: Resolution of the dependency failed, type = "OrderManagementInterfaces.IOrderModel", name = "(none)". Exception occurred while: Calli

我有一个解决方案WCF服务,其中包含许多实体框架模块。每个dll的命名都不同

当我和我的同事在本地运行时,一切正常。当我们运行自动构建并将文件复制到Dev服务器时,一切正常

但是,当我们将文件复制到测试服务器时,我得到一个错误:

Resolution of the dependency failed, type = "OrderManagementInterfaces.IOrderModel", name = "(none)".  
Exception occurred while: Calling constructor OrderDAL.OrderEntities(System.String connectionString).  
Exception is: MetadataException - Schema specified is not valid. Errors: 
OrderDataModel.csdl(3,4) : error 0019: The EntityContainer name must be unique. An EntityContainer with the name 'OrderEntities' is already defined.
然后,我的模式的所有部分都表示每个部分都已经定义好了。当我第一次遇到这个错误时,它是同一种错误,但是对于不同的实体框架模块。不确定这是否重要

所以我的问题是:是否有IIS设置可能导致这种情况?为什么它在我的开发服务器上工作而不是在我的测试服务器上

我能做些什么来修复它

注意:我已经检查了很多次,看看是否有重复的模块或容器名称。只有一个名为OrderEntities的模块和容器

我看到有时这是连接字符串元数据部分的产物。我的连接字符串如下所示:

metadata=res://*/OrderDataModel.csdl|res://*/OrderDataModel.ssdl|res://*/OrderDataModel.msl;provider=...
除数据模型名称不同外,所有其他名称都相同


注意:当我部署到IIS时。我删除了所有文件,只从自动构建中复制内容。这两个地方都有相同的东西。

结果证明这与我的代码无关


我的应用程序池中的身份设置不正确。一旦切换到正确的值,它就开始工作:

可能与@CraigStuntz重复-答案是您的两个EDMX文件可能具有相同的实体容器名称。我在问题中清楚地指出,我的情况并非如此。不,您声明您的模块名称不同。您不会说容器名称不同。这是两件不同的事情。@CraigStuntz-更新了我的问题,以反映模块和容器的名称是唯一的。我仍然认为您有重复的容器名称,但尚未找到它们。可能只在测试服务器上的程序集中,这可以解释为什么在源代码中找不到它。这个错误消息非常明确。话虽如此,这是一个很好的例子,说明了为什么在EF connect字符串中使用*在非平凡应用程序中是一个坏主意。最好指定一个特定的程序集。