我第一次尝试使用WCF但是我遇到的问题很快,我不明白。我还没有改变自动生成代码的原始结构。我得到了这个代码在网站上工作。
using ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
string data = wcfClient.GetData(32);
Label1.Text += data;
}
但是当我开始使用这段代码时,我遇到了一些问题。
ServiceReference.Kund kund;
using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
string data = wcfClient.GetDataUsingDataContract(kund);
}
我收到了这个错误。我不能真正看到数据类型有任何问题,它不是一个字符串。
无法将类型'Webbshop.ServiceReference.Kund'隐式转换为'string'
编辑:
[ServiceContract]
public interface IService
{
[OperationContract]
string GetData(int value);
[OperationContract]
Kund GetDataUsingDataContract(Kund kund);
}
[DataContract]
public class Kund
{
int iD;
[DataMember]
public int ID
{
get { return iD; }
set { iD = value; }
}
}
答案 0 :(得分:1)
你能告诉我们你有的服务合同(IMyService
接口,或者你的情况下叫什么)?
通常,WCF服务生成的示例应用程序将有一个返回字符串的方法GetData
,以及显示如何返回复杂数据类型的第二个方法
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
}
此处:第二种方法 - 在您进行更改后 - 返回Kund
。当然,如果你称那个返回Kund
的第二种方法,你不能只将整个Kund
分配给一个字符串....你必须做类似的事情:
ServiceReference.Kund kund;
using (ServiceReference.ServiceClient wcfClient = new ServiceReference.ServiceClient())
{
Kund returnedKund = wcfClient.GetDataUsingDataContract(kund);
// then assign whatever properties from `data` you need to your string .....
string data = returnedKund.ID.ToString(); // or something.....
}