首先,我想说我有一个功能齐全的WCF服务,它使用许多端点和服务合同,没有任何问题。
好的,这是我的情景。我有一个嵌套在另一个类中的类。
[Serializable]
[DataContract]
public class Database {
[Serializable]
[DataContract]
public class MyTable {
}
}
在我的端点上,我引用了一个考虑使用这些类的接口。我的界面如下所示:
[ServiceContract]
public interface IDatabase {
[OperationContract]
void GetData(Database.MyTable MyTableData);
}
我的端点如下所示:
<endpoint address="Database" binding="netTcpBinding" bindingConfiguration=""
name="Database" contract="MyNamespace.IDatabase" ></endpoint>
现在,在客户端上,我遇到一个错误,指出元数据无法找到引用。我确切地知道问题的确切位置,以及这个类嵌套在另一个类中的事实。要解决此问题或真正解决此问题,我一直在对我的界面执行以下操作。
[ServiceContract(Namespace="http://MyNamesapce"]
public interface IDatabase {
[OperationContract]
void GetData(Database.MyTable MyTableData);
}
解决了所有问题,客户端可以完美地生成元数据。我知道我错过了一个非常重要的WCF的理解。我或多或少地寻找答案为什么在该服务契约上指定一个引用嵌套类的命名空间有助于解决我的元数据生成问题,答案应该是显而易见的,但我现在是盲目的。
编辑1
另外,如果我能在app.config中修复此问题,我很乐意。