在WCF中实现双向通信, Callback 注意问题
看了Artech 的我的WCF之旅(3):在WCF中实现双向通信(Bi-directional Communication)
自己也写了个小例子, 可谓“好事多磨”, 看着人家的文章一步一步地搞这个例子也遇到了不少问题。
好在有我这双Debug查错的火眼金睛,问题都迎刃而解。
总结起来, 以下几个问题是要注意的:
1.baseAddress 是一定要的。 一开始我还自以为是的认为有了endpoint配置节的ABC(Address, Binding, Contract)就可以了.
<host>
<baseAddresses>
<add baseAddress="http://localhost:10002/ComputeService"/>
</baseAddresses>
</host>
<baseAddresses>
<add baseAddress="http://localhost:10002/ComputeService"/>
</baseAddresses>
</host>
2. 指定Callback Contract跟那一个Contract关系:
3. 在Service实现类中设定并发模式:
4. 要为URL 添加保留项,即开放该地址http://localhost:10002/ComputeService. 这个操作只针对Vista, 可能Windows 2003也要, 不清楚。
如何添加呢?
首先, 如果你打开了UAC(用户帐户控制),你需要关闭它。
打开命令行, 使用netsh.exe 工具进行配置(Windows 2003使用httpConfig.exe)
键入 netsh http add urlacl url=http://+:10002/ComputeService user=[Domain]\[UserName]
关于更多为http 的url设置相关权限的信息, 参考:
http://msdn2.microsoft.com/en-us/library/ms733768.aspx.