WCF分布式开发常见错误(28):The requested upgrade is not supported by...

Posted on 2010-03-13 18:39 Frank Xu Lei 阅读(270) 评论(0)   编辑 收藏 所属分类: SOA and EAI, 开发常见错误解决

  今天在调试WCF4.0 Routing 路由服务例子代码的时候,启动客户端测试WCF路由服务,遇到这个错误。

因为网上资料很少,目前搜索不到任何中文资料。英文资料也十分少,google.com搜索的连接也被屏蔽了,不能访问。所以把这个问题的解决办法发出来,共大家参考,希望对后来遇到类似错误的人一个参考。

【1】调试环境:

  1)操作系统:Windows XP 专业版

  2)IDE环境:Visual Studio 2010 Beta2

  3)Framework: .NET Framework 4.0

【2】错误信息:

  Error : The requested upgrade is not supported by 'net.tcp://localhost:9002/WCFServiceB'. This could be due to mismatched bindings (for example security enabled on the client and not on the server).

 

  错误:服 'net.tcp://localhost:9002/WCFServiceB'不支持请求升级。这可能是由于绑定不匹配导致的错误(例如客户端启用安全,而服务器没有。)。

【3】错误截图:

   运行时客户端抛出的英文异常信息如下图所示:

 

【4】问题分析:

      这个错误的原因,在异常信息里有部分提示:可能绑定不匹配导致的错误。

  1)客户端和服务端安全模式不同,例如客户端启用安全,而服务端没有启用安全;

  2)客户端和服务端编码模式不同;导致无法匹配错误信息。

  3)客户端和服务端SOAP版本不同。也可能导致问题。

  4)客户端和服务端事务设置不同等等。

      都可能导致这个错误。我们先来检查服务端和客户端的配置,发现服务端没启用安全,而路由服务在对于客户端绑定的配置使用的是默认的设置,也就是启用了传输安全模式。

【5】解决办法:

  为了解决这个问题,必须保持客户端配置和服务的一致性。就是在客户端针对终结点,添加如下配置:

  < system.serviceModel >
    
< services >
         
< client >
      
< endpoint  name ="EndPointB"   bindingConfiguration="netTcpConfig"
                address
="net.tcp://localhost:9002/WCFServiceB"
                binding
="netTcpBinding"
                contract
="*"   />
    
</ client >
    
< bindings >
      
< netTcpBinding >
        
< binding  name ="netTcpConfig" >
          
< security  mode ="None" >
          
</ security >
        
</ binding >
      
</ netTcpBinding >
    
</ bindings >
     
</ system.serviceModel >
</ configuration >

 

    这样就保证了客户端和服务端配置的一致性。重启程序,这样就可以调用成功了。

【总结】

  因为WCF针对消息属性的设置,大部分都是通过绑定来控制的。如果客户端和服务端绑定不同,或者绑定的设置不同,就可能导致消息的编解码或者结构不同,进而出现无法解析等错误,也就是我们通常看到的客户端无法和服务端通信,这个在WCF安全开发的时候是比较常见的。

参考链接:

1.http://social.microsoft.com/Forums/zh-CN/wcfzhchs/thread/1112d059-1dbb-4f97-9536-14956b68061a

2.http://snahta.blogspot.com/2009/06/wcf-error-requested-upgrade-is-not.html


老徐的博客
【作      者】:Frank Xu Lei
【地      址】:http://www.cnblogs.com/frank_xl/
【中文论坛】:微软WCF中文技术论坛
【英文论坛】:微软WCF英文技术论坛

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值