2016-07-25 30 views
0

我是WCF的新手。我只是遵循一个简单的演练来创建和使用一个简单的WCF服务(漫游使用字符串数据类型)。但是,我无法使用自定义类型的WCF服务。以下是我的尝试:如何使用接收强类型对象作为输入的WCF服务?

首先,我创建了界面。

[DataContract] 
    public class TicketInfo 
    { 
     public string TicketID { get; set; } 
     public string TicketDescription { get; set; } 
    } 

    [OperationContract] 
    String GetTicketInfo(TicketInfo ticketInfo); 

我然后在实现接口的服务创建的方法,包括:

public string GetTicketInfo(TicketInfo ticketInfo) 
{ 
    return string.Format("The ID is {0}", ticketInfo.TicketID); 
} 

我然后加入客户机上的服务引用。

现在,我试图使用该服务:

Service1Client client = new Service1Client(); 

     string returnString; 
     TicketInfo ticketInfo = new TicketInfo(); 
     ticketInfo.ID = "1"; 
     returnString = client.GetTicketInfo(ticketInfo); 

的代码失败在这里:

 ticketInfo.TicketID = "1"; 

的错误信息是:

“ Ticketnfo'不包含'TicketID'的定义并且没有扩展锡永 方法“TicketID”接受类型“TicketInfo”可以是 的第一个参数实测值(?是否缺少使用指令或程序集引用)

要TicketInfo的客户端上的定义所示:

public partial class TicketInfo : object, System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged { 

[System.NonSerializedAttribute()] 
private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 

[global::System.ComponentModel.BrowsableAttribute(false)] 
public System.Runtime.Serialization.ExtensionDataObject ExtensionData { 
    get { 
     return this.extensionDataField; 
    } 
    set { 
     this.extensionDataField = value; 
    } 
} 

为什么客户端上的ServiceReference1.TicketInfo服务器上没有Service1.TicketInfo的所有属性?我如何使用这项服务?

+1

您有一个属性TicketID,并尝试使用ID访问它。也许更新服务参考 – Laurijssen

+0

或使用TicketID ... – Laurijssen

+1

尝试用'DataMember'属性装饰DataContract的成员 –

回答

1

尝试使用DataMember属性装饰DataContract的成员