【问题标题】:Self hosting WCF inside WPF在 WPF 中自托管 WCF
【发布时间】:2010-12-24 00:40:51
【问题描述】:

感谢 Kent Boogart 的回答,现在一切正常。非常感谢您的所有回答!


你好,

我需要在 WPF gui 中自行托管 WCF 服务。我正在使用 ServiceHost。

但我仍然无法解决问题。

首先我托管一个服务:

ServiceHost host;
Service.ISORClient service = new Service.SORClient();
//The next are in window constructor
host = new ServiceHost(service);
host.Open();

我想在按下按钮时刷新数据,所以:

dataGrid1.ItemsSource = service.GetPatients();

它有效,但只有一次。如果我尝试多次刷新它,它就不起作用了。

这是我的 WCF 服务声明:

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.Single)]
    public class SORClient : ISORClient
    ... and all the methods come here...

奇怪的是,当我从客户端应用程序连接时。我可以得到所有的数据,一切都是正确的。我只是无法将数据导入 GUI(好吧,我只能获取一次)。

非常感谢您!

【问题讨论】:

  • 尝试分离关注点。我不认为 WPF 与它有任何关系,但是......也许从这个简单的控制台框架开始会有所帮助。 codeproject.com/KB/WCF/generic_wcf_host.aspx
  • 抛开问题我想知道您为什么要在客户端应用程序中托管 WCF?您正在有效地构建胖客户端,那么为什么要在服务中托管应用程序业务逻辑的开销?
  • 你说它不起作用是什么意思?它会抛出异常、不返回数据还是返回相同的数据?你能在GetPatients() 方法中添加断点,并确保在从WPF 客户端调用时它会成功吗?

标签: c# wpf wcf self-hosting


【解决方案1】:

抛开设计问题,我怀疑你已经被the Equals() override issue咬了。

试试这个来证明它:

dataGrid1.ItemsSource = null;
dataGrid1.ItemsSource = service.GetPatients();

【讨论】:

  • 您链接到的原始博客文章已经消失,所以我已经为您修复了。我知道这是一个旧答案,但是您可以在此处发布一些帖子来解释问题吗,因为不鼓励在没有解释或上下文的情况下盲目链接到外部资源?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-01
  • 1970-01-01
相关资源
最近更新 更多