2011-10-27 22 views
1

因此,這裏是我的App.config:無法從遠程計算機獲取元數據,但當地是好的

<?xml version="1.0"?> 
<configuration> 
    <runtime> 

    </runtime> 
    <system.serviceModel> 
    <diagnostics performanceCounters="Default" /> 
    <bindings /> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="CrossDomainServiceBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="AService.AServBehavior"> 
      <serviceMetadata httpGetEnabled="false" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="MyService.MyServiceBehavior" name="MyService.MyServ"> 
     <endpoint address="MyService" behaviorConfiguration="" binding="netTcpBinding" contract="AService.IAServ" isSystemEndpoint="false" /> 
     <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration> 

正如你可以看到有什麼特別的。我只想創建帶有tcp綁定和傳輸元數據信息的簡單服務。我使用basicHttpBinding與同一個成功,並且一切都很順利。 這裏是與baseaddress創建服務實例代碼:

Console.WriteLine("net.tcp://" + _bindAddress + "/"); 
ServiceHost myserviceHost = new ServiceHost(typeof(MyService), new Uri(String.Concat("net.tcp://", _bindAddress, "/"))); 
myserviceHost.Open(); 

_bindAddress是來自於定製服務配置XML文件的字符串。我試圖將服務綁定到IP地址爲172.19.0.102:8733的內部網絡接口。然後,我嘗試使用WcfTestClient服務的機器上的地址127.0.0.1:8733獲取服務元數據,並且每個都沒問題。但後來我試圖通過Internet在目標遠程機器上獲取服務的元數據,我得到了TCP error with code 10051。 我的目標是通過Internet爲任何客戶端提供服務併爲其發佈元數據。有防火牆和其他網絡的東西沒有問題。似乎我需要進行一些配置編輯,以便與所有人共享服務共享元數據。 在此先感謝!


POST編輯:

這是我的tryings:被配置爲在172.19.0.102:8733結合 1)服務。 答:WCF測試客戶端嘗試從地址net.tcp://127.0.0.1:8733/獲取託管機器上的元數據失敗,並返回TCP error code 10061。 B.在同一臺計算機上,WCF客戶端試圖從net.tcp://172.19.0.102:8733獲取元數據,它工作正常。 C. WCF測試客戶端試圖從地址net.tcp://192.168.1.2:8733/(它的服務的機器IP地址)在局域網中的另一臺機器上獲取元數據給出錯誤TCP error code 10061

回答

0

該錯誤意味着:網絡無法訪問這是最有可能發生的事情。您的IP地址屬於專用網絡範圍,並且這些地址不能直接從Internet/WAN尋址 - 它們僅用於LAN中的本地使用。要通過互聯網訪問這樣的地址,您必須配置您的公開曝光的路由器/網關接受連接並將其轉發到您的內部設備= NAT /端口轉發等。

+0

我爲該服務設置ASP .NET(udpate服務引用)然後將此網站上傳到主機。然後在hoster機器上,我配置了web.config地址,指向服務託管的靜態IP地址,然後再次出現此錯誤。我知道B類網絡地址不會被客戶端訪問,所以我編輯配置文件直接連接到服務的機器。即使我嘗試從幾乎相同的服務(使用basicHttpBinding)獲取元數據配置爲綁定在172.19.0.102:8732它工作正常。 – kseen

+0

對於什麼是可訪問的,什麼不可以以及您的應用程序如何部署,我有點迷失。那麼你能從環回和真實地址本地訪問net.tcp服務(在託管機器上)嗎?您可以從同一網絡中的其他機器訪問該服務嗎?它是否與真實客戶端而不是測試客戶端一起工作?您可以診斷託管客戶端計算機上的TCP流量以查看詳細信息。通信中是否包含任何網絡設備?你能簡單地telnet到端口嗎?它看起來更像是診斷網絡問題。 –

+0

好拉迪斯拉夫請看我的帖子編輯,以獲得額外的測試結果。 – kseen

相關問題