在WPF中自托管WCF服务

4

感谢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中(好吧,我只能获取一次)。
非常感谢您提前的帮助!

1
尝试分离关注点。我认为WPF与此无关,但是......也许从这个简单的控制台框架开始会有所帮助。http://www.codeproject.com/KB/WCF/generic_wcf_host.aspx - kenny
抛开问题不谈,我想知道为什么你想在客户端应用程序中托管WCF?实际上,你正在构建一个臃肿的客户端,那么为什么要承担在服务中托管应用程序业务逻辑的开销呢? - Pero P.
当你说它不工作时,你的意思是什么?它会抛出异常、返回空数据还是返回相同的数据?你能否在 GetPatients() 方法中添加断点,并确保在从 WPF 客户端调用时它被命中了? - decyclone
1个回答

2

不考虑设计问题,我怀疑您已经受到了Equals()重写问题的影响。

尝试使用以下方法进行验证:

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

你提供的原始博客文章已经失效,所以我已经为您修复了链接。我知道这是一个旧答案,但您能否在此处发布一些您的帖子来解释问题,因为不鼓励将没有解释或上下文的盲目链接指向外部资源? - slugster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接