我绝望了,我正在尝试将现有服务引用更新为 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
}
请帮助我,并提前非常感谢。