【发布时间】:2009-11-13 19:03:23
【问题描述】:
背景
从使用 .Net Remoting 转换为 WCF。 WCF 服务器上的大多数方法都可以正常工作,但遇到了一个今天无法正常工作的方法。
这是服务合同:
[ServiceContract]
public interface IMyService
{
[OperationContract]
generated.Response.ACS_Response Check(generated.Request.ACS_Request request);
}
我剪掉了该接口上的其余方法,因为它们正在工作。基本上,我试图传入一个请求对象并取回一个响应对象。
ACS_Response 和 ACS_Reqeust 的类是使用 XSD.exe 针对 XSD 文件生成的。这些类驻留在 WCF 客户端和 WCF 主机都引用的 Api 程序集中。
问题
我能够调用 WCF 主机和 Request 对象,并且主机能够完成它的工作。当主机尝试返回 Response 对象时,我遇到了异常。
我打开了 WCF 跟踪并看到一个 SerializationException 说:
Type 'Api.generated.Response.ACS_ResponseQuestion'
with data contract name 'ACS_ResponseQuestion:http://...' is
not expected. Add any types not known statically.........
问题
首先,我很困惑,因为我能够成功发送一个 Request 对象,所以看起来基础工作正常。
其次,此序列化在 .Net Remoting 下运行。这些类都是由 WSDL 生成的,所以它们不应该是可序列化的吗?
第三,主机和客户端都引用了定义这些类的同一个 Api 程序集,因此服务器和客户端都知道它们。
【问题讨论】:
标签: c# wcf serialization