首页 新闻 会员 周边 捐助

急啊 请各位帮帮

0
悬赏园豆:50 [待解决问题]
我在远程服务器上创建了一个wcf服务
服务器上测试客户端都没问题
但是在本地创建客户端,添加服务
然后调用服务的函数时候
报错:无法处理消息。这很可能是因为操作“http://tempuri.org/IHelloWCFService/HelloWCF”不正确,或因为消息包含无效或过期的安全上下文令牌,或因为绑定之间出现不匹配。如果由于未处于活动状态导致服务中止了该通道,则安全上下文令牌无效。若要防止服务永久中止闲置会话,请增加服务终结点绑定上的接收超时。
我调试了两天不知道是怎么回事?
ytdz的主页 ytdz | 初学一级 | 园豆:142
提问于:2011-10-13 11:48
< >
分享
所有回答(2)
0

在本地通过浏览器能访问吗?

dudu | 园豆:29732 (高人七级) | 2011-10-13 11:55

可以的

支持(0) 反对(0) ytdz | 园豆:142 (初学一级) | 2011-10-13 12:01

@lwecell: 参与一下博问中已解决的问题 —— 无法与远程WCF服务器通信

支持(0) 反对(0) dudu | 园豆:29732 (高人七级) | 2011-10-13 13:03
0

首先判断你的安全机制,把服务器端和客户端的Security.Mode = SecurityMode.None,而不用message,一般用配置文件的话,配置文件里binding里有security,把message改为None,如果是后台代码写的话,先实例化WSHttpBinding ws = new WSHttpBinding();然后ws.Security.Mode = SecurityMode.None;我建议用代码写,这样灵活,用配置文件还是比较容易出错。

       如果这项没问题,你可以检查下自己基址,wcf的serverhost实例化的时候,可以选择性的加上基址,如果不加也可以在配置文件里找,但是建议自己写,  Uri baseAddress = new Uri("http://192.168.1.99:8000/WcfDemo/Service");host = new ServiceHost(typeof(Service1),baseAddress);//WcfDemo.Service1 为引用的dll中的服务。一般很随意的把基址写成localhost,这样很容易出错,尤其是用配置文件,不改的话,默认是localhost,而且不易察觉。这样的话当你引用该服务的时候只能用机器名而不能用IP找到目标机器的服务。

        如果用的是默认的localhost,就要把基址中的Localhost改为本机的IP,如果用的是配置文件的话,需要把找到你indetity下的dsn value把Localhost改为远程IP(目标机器IP)。

LCM | 园豆:6876 (大侠五级) | 2011-10-13 14:13

按照你得改了 还是不可以呢

支持(0) 反对(0) ytdz | 园豆:142 (初学一级) | 2011-10-13 14:26
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册