我已经解决了,我正在尝试更新现有的服务引用到WCF服务(共享类型),我不能。我已经尝试过我在Google上发现的所有内容(social.msdn,stackoverflow,...),但我还没有找到问题的解决方案。
我有一个ServiceContract,我添加了一个新的操作,如下面的代码:
[ServiceContract]
public partial interface IServiceDTO : IGenericServiceDTO<EntityDTO>
{
// Some OperationContracts working like
[OperationContract]
EntityDTO[] Method(int field);
// NewMethod
[OperationContract]
OtherEntityDTO[] NewMethod(int field);
}
[DataContract]
public class EntityDTO {
// Some properties working
}
[DataContract]
public class OtherEntityDTO {
// Some properties working
[DataMember]
YetAnotherEntity NewProperty {get;set;}
}
当我尝试更新服务引用时,它会抛出以下错误:
尝试使用WS-Metadata Exchange或DISCO从'http:// localhost:65499 / Services / Acciones / ProcesoServiceDTO.svc'下载元数据。 错误:无法导入wsdl:portType 详细信息:运行WSDL导入扩展时抛出异常:System.ServiceModel.Description.DataContractSerializerMessageContractImporter 错误:引用类型'mpm.seg.ServiceModel.DTO.DataContracts.Acciones.ProcesoDTO,mpm.seg.ServiceModel.DTO.DataContracts,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null',数据协定名称为'ProcesoDTO'在命名空间'http://schemas.datacontract.org/2004/07/mpm.seg.ServiceModel.DTO.DataContracts.Acciones'中无法使用,因为它与导入的DataContract不匹配。 需要将此类型从引用的types.XPath排除到错误源:// wsdl:definitions [@ targetNamespace ='http://tempuri.org/'] / wsdl:portType [@ name ='IProcesoServiceDTO']
首先,我不完全理解句子“......因为它与导入的DataContract不匹配而无法使用”。 svcutil如何尝试将引用类型与导入的DataContract匹配?我引用了在客户端项目中具有引用类型的项目,因为服务器和客户端在同一个解决方案中,但我试图将它们分开并引用完全相同的dll。
此外,当我尝试时,例如,它的工作原理如下(将“OtherEntityDTO”的“NewProperty”写入EntityDTO),我不明白其中的区别:
[ServiceContract]
public partial interface IServiceDTO : IGenericServiceDTO<EntityDTO>
{
// Some OperationContracts working like
[OperationContract]
EntityDTO[] Method(int field);
// NewMethod
[OperationContract]
OtherEntityDTO[] NewMethod(int field);
}
[DataContract]
public class EntityDTO {
// Some properties working
[DataMember]
YetAnotherEntity NewProperty {get;set;}
}
[DataContract]
public class OtherEntityDTO {
// Some properties working
}
请帮助我,并提前感谢。
答案 0 :(得分:0)
很抱歉,但在我发布问题后,我发现了问题,这是一个报告错误(http://blogs.msdn.com/b/distributedservices/archive/2010/02/04/wcf-client-issue-with-reuse-types-from-referenced-assemblies.aspx?wa=wsignin1.0)。另一个开发人员在父类上添加了这个属性(IsReference = true),我不知道。现在我必须解决这个问题,但这是另一场战斗。
无论如何,我不明白为什么有时工作,有时候不工作......
感谢。
答案 1 :(得分:0)
我有类似的错误,但我的问题似乎有所不同。
我有一个只读属性,我一直收到这个错误。当我将其更改为普通属性并添加了一组(没有做任何事情)时,合同工作正常。