程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WCF分布式開發常見錯誤(28)

WCF分布式開發常見錯誤(28)

編輯:關於.NET

WCF分布式開發常見錯誤(28):The requested upgrade is not supported by...

今天在調試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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved