我有一个 WCF 服务,在其中实现了一个带有输出参数的服务方法,这个输出参数的类型是一个接口,就像这样:
bool GetFoo(out IFoo foo)
{
foo = new AFoo();
return true;
}
这里IFoo是接口,AFoo是继承它的具体类型。
然后,在客户端,我使用服务引用调用此方法并收到以下错误:
System.ServiceModel.CommunicationException:'在接收来自http://localhost:4504/MyService 的 HTTP 响应时发生错误。这可能是因为服务端点绑定未使用 HTTP 协议。这也可能是由于服务器中止了 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参见服务器日志.'
有趣的是,当我从服务方法中删除接口参数时,一切正常。例如:
bool GetFoo()
{
IFoo foo = new AFoo();
return true;
}
AFoo类型在客户端已经是已知类型,我可以正常使用。
更新1
添加一个基类Foo,使得Afoo继承自Foo,而Foo则从IFoo继承。 例如:AFoo : Foo : IFoo(逻辑上)当服务方法被修改时会出现相同的错误。
bool GetFoo(out Foo foo)
{
foo = new AFoo();
return true;
}
我将所有的类和接口都保持为空(意味着它们内部没有任何内容)。
更新2
以下内容似乎完美地运行。
bool GetFoo(out AFoo foo)
{
foo = new AFoo();
return true;
}
为什么基类Foo没有起作用?有任何想法吗?
out
吗?AFoo 类是否带有 DataContract 属性装饰? - Chetan