这里很奇怪。我在类中有一个复杂的对象,这意味着一个类中的类被传递给nettcp WCF服务。当作为localhost运行时,一切运行良好。我可以通过VS发现服务,我可以绑定它,并调用方法并接收我的复杂对象没有问题。一旦我将服务移动到另一台机器,只有另一个方法调用返回简单对象(带有字符串,布尔等的类)。具有复杂类的方法不起作用。
太,一旦我把服务放在远程机器上,然后回到VS绑定到它,我得到“元数据包含一个无法解析的引用...”消息。我将所有配置复制到服务中。同样,除了复杂的类方法之外,所有其他方法都有效,并且它不会绑定到VS中的远程服务。
以下是不起作用的课程:
[DataContract]
public class SystemStatus
{
private XmlDocument statusXml = null;
private bool callSuccess = false;
private SystemModule sysMod = null;
[DataMember]
public XmlDocument StatusXml
{
get { return statusXml; }
set { statusXml = value; }
}
[DataMember]
public bool CallSuccess
{
get { return callSuccess; }
set { callSuccess = value; }
}
[DataMember]
public SystemModule SysMode
{
get { return sysMod; }
set { sysMod = value; }
}
}
在上面的类中,破坏所有内容的属性是底部的“SystemModule”类。如果我删除它,该方法将在远程服务上工作,我可以绑定到远程服务。
这是SystemModule类:
[DataContract]
public class SystemModule
{
private string sysName = "";
private int sysId = 0;
[DataMember]
public string SysName
{
get { return sysName; }
set { sysName = value; }
}
[DataMember]
public int SysId
{
get { return sysId; }
set { sysId = value; }
}
}
这似乎是一个简单的修复,所有类都应该是可序列化的。不确定我错过了什么。