【发布时间】:2018-07-17 19:05:25
【问题描述】:
我有一个 WCF 服务,我在其中实现了一个服务方法,其输出参数的类型是这样的接口
bool GetFoo(out IFoo foo)
{
foo = new AFoo();
return true;
}
这里IFoo是接口,AFoo是继承的具体类型。
然后在客户端我使用服务引用调用此方法并收到以下错误
System.ServiceModel.CommunicationException: '发生错误时 接收到 HTTP 响应 http://localhost:4504/MyService。这可能是由于 服务端点绑定不使用 HTTP 协议。这也可以 是由于服务器中止了 HTTP 请求上下文 (可能是由于服务关闭)。查看服务器日志了解更多信息 详细信息。'
有趣的是,当我从服务方法中删除接口参数时,一切正常。例如
bool GetFoo()
{
IFoo foo = new AFoo();
return true;
}
AFoo类型在Client端已经是已知类型,可以正常使用。
更新 1
添加 基类 Foo 使得 Afoo 继承自 Foo 并且 Foo 继承自 IFoo ex: AFoo : Foo : IFoo (逻辑上) 有 same error 当服务方法被修改为
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 属性修饰? -
输出不是问题。为什么,因为我所有的服务方法都有参数并且工作正常。同样正如我所说,AFoo 已经是一种已知类型。