1

我绝望了,我正在尝试将现有服务引用更新为 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',命名空间'http://schemas.datacontract.org/2004/07/mpm.seg.ServiceModel 中的数据合约名称为'ProcesoDTO'。 DTO.DataContracts.Acciones' 不能使用,因为它与导入的 DataContract 不匹配。需要将此类型从引用的 types.XPath 中排除到错误源://wsdl:definitions[@targetNamespace='

首先,我不完全理解这句话“...不能使用,因为它与导入的 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
}

请帮助我,并提前非常感谢。

4

2 回答 2

0

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

我有一个只读属性,并且一直收到该错误。当我将其更改为普通属性并添加一个集合(什么也没做)时,合同运行良好。

于 2013-04-04T14:48:15.900 回答
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),我不知道。现在我必须解决这个错误,但这是另一场战斗。

无论如何,我不明白为什么有时工作,有时不...

谢谢。

于 2012-09-21T15:37:45.547 回答