none
用 C# 製作 WCF 系統無法連線的問題 RRS feed

  • 問題

  • 你好, 我的 WCF 是使用 net.tcp 作為通訊協定 , 使用在同一個網段的區域網路。
    服務端和客戶端並沒有任何防火牆的阻隔,也沒有防毒軟體限制連線。
    服務可以正常的開啟, 但是客戶端就是無法連線到服務端的主機。

    發生錯誤的畫面圖片網址 :

    http://img692.imageshack.us/img692/3192/errorygh.jpg

    我的服務端程式碼 :
    ------------------------------------------------------------------------------------------------------------
    ServiceHost svrHost = new ServiceHost(typeof(BASE.ServiceHostProcessor.ServiceHostProcessor),
                                              new Uri("net.tcp://localhost:9000/")
                                             );
         
                    svrHost.AddServiceEndpoint(typeof(BASE.ServiceBase.ServiceInterface),
                                               new NetTcpBinding(SecurityMode.None),
                                               "MAT0001"
                                              );
    svrHost.Open();
    -------------------------------------------------------------------------------------------------------------

    我的用戶端程式碼 :
    -------------------------------------------------------------------------------------------------------------
    ServiceClientProcessor svrClient = new ServiceClientProcessor(new NetTcpBinding(SecurityMode.None),
                                                              new EndpointAddress("net.tcp://192.168.1.7:9000/MAT0001")                
                                                             );
    svrClient .Open();
    -------------------------------------------------------------------------------------------------------------

    我用 netstat -a 查過服務端的 9000 Port 有開, 而且確定是 WCF Service 開啟的(開啟 WCF Service 才會顯示 9000 Port)

    我用網路芳鄰也可以正常的從用戶端電腦連到服務端電腦,所以網路應當沒問題。

    我有用 MessageBox.Show 顯示 服務端的 ServiceHost.State , 顯示的也是 Opened

    查了很多地方都很正常, 就是不知道為何無法連線。

    2011年3月15日 上午 07:41

解答

  • 如果把 net.tcp://localhost:9000 改成 net.tcp://192.168.1.7:9000 ?
    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    • 已標示為解答 Arthur Jan 2011年3月16日 上午 12:45
    2011年3月15日 上午 09:35
    版主
  • ServiceHost svrHost = new ServiceHost(typeof(BASE.ServiceHostProcessor.ServiceHostProcessor),
                                              new Uri("net.tcp://localhost:9000/")
                                             );

     

    這樣Listener 恐怕只會開在127.0.0.1 , 改採小朱的建議, 或是使用主機名稱來指派


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Arthur Jan 2011年3月16日 上午 12:45
    2011年3月15日 下午 04:57
    版主

所有回覆

  • 如果把 net.tcp://localhost:9000 改成 net.tcp://192.168.1.7:9000 ?
    小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
    雲端學堂Facebook: http://www.facebook.com/pages/StudyAzurecom-yun-duan-xue-tang/155855707799579
    • 已標示為解答 Arthur Jan 2011年3月16日 上午 12:45
    2011年3月15日 上午 09:35
    版主
  • ServiceHost svrHost = new ServiceHost(typeof(BASE.ServiceHostProcessor.ServiceHostProcessor),
                                              new Uri("net.tcp://localhost:9000/")
                                             );

     

    這樣Listener 恐怕只會開在127.0.0.1 , 改採小朱的建議, 或是使用主機名稱來指派


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。
    • 已標示為解答 Arthur Jan 2011年3月16日 上午 12:45
    2011年3月15日 下午 04:57
    版主
  • 先感謝 兩位版主的解答, 我把 ServiceHost 的 Address 改成主機和 ip 都可以正常連線了。

    再三感謝。

    2011年3月16日 上午 12:45