WCF更新服务引用错误

时间:2012-09-21 15:14:56

标签: wcf service-reference

我已经解决了,我正在尝试更新现有的服务引用到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
}

请帮助我,并提前感谢。

2 个答案:

答案 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)

我有类似的错误,但我的问题似乎有所不同。

我有一个只读属性,我一直收到这个错误。当我将其更改为普通属性并添加了一组(没有做任何事情)时,合同工作正常。