2012-12-19 47 views
3

我以前要求question在嘗試從遠程計算機訪問WCF服務時解決SecurityNegotiationException。由於ValtasarIII的回答,這個例外已經解決。無法連接到遠程WCF服務 - TimeoutException

現在我有一個不同的問題。我在服務器上託管了我的服務,並希望使用客戶端應用程序連接到它。但是,當我嘗試訂閱從客戶端應用程序的服務,什麼都不會發生,並在結束時,我得到異常:

The open operation did not complete within the allotted timeout of 00:00:59.9939996. The time allotted to this operation may have been a portion of a longer timeout. 

(我可以分享,如果有必要堆棧跟蹤)

雖然當我嘗試測試服務是否正在運行,我可以通過客戶機上的瀏覽器成功訪問它。

這裏是我的配置:

服務 - web.config中

<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="wsHttpDual"> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <protocolMapping> 
     <add scheme="http" binding="wsDualHttpBinding" bindingConfiguration="wsHttpDual"/> 
    </protocolMapping> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    </system.serviceModel> 
</configuration> 

客戶 - 的app.config

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.serviceModel> 
    <bindings> 
     <wsDualHttpBinding> 
     <binding name="WSDualHttpBinding_ISampleContract" clientBaseAddress="http://95.138.188.232:8000/myClient/"> 
      <!--<security mode="Message"> 
      <message clientCredentialType="Windows" algorithmSuite="Default" /> 
      </security>--> 
      <security mode="None"> 
      <message clientCredentialType="None" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </wsDualHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://95.138.188.232/autofxtools/service.svc" 
      binding="wsDualHttpBinding" bindingConfiguration="WSDualHttpBinding_ISampleContract" 
      contract="ISampleContract" name="WSDualHttpBinding_ISampleContract"> 
     <identity> 
      <servicePrincipalName value="host/95.138.188.232" /> 
     </identity> 
     </endpoint> 

    </client> 
    </system.serviceModel> 
</configuration> 

...我已經尋找一個解決方案,但什麼事都沒有爲我工作。服務配置似乎暗示沒有安全要求。但是,具有相同配置的客戶端實際上與服務在同一臺計算機上工作,但不是遠程計算機。這是否意味着仍然存在Windows身份驗證(按照wsDualHttpBinding的默認設置)?如果是這樣,那麼我哪裏錯了?

希望得到一些積極的反饋。

問候。

回答

2

這可能是一個防火牆問題。我假設你在國際空間站主持服務 - 你確定各個端口是開放的嗎?當您嘗試通過瀏覽器訪問服務時會發生什麼?

另外,我在德國論壇閱讀以下內容:

Anscheinend tritt DAS問題淖爾貝WsDualBinding AUF,德恩德港口80 belegt IST。 Gibt wohl keineMöglichkeitden Port Hilfe von ClientBaseAdress zuändern。 EinzigeMöglichkeitist hier wohl netTcpBinding。

這英文的意思是:

顯然使用WsDualBinding當在80端口已經被佔用這個問題就出現了。似乎沒有辦法使用ClientBaseAddress更改端口。唯一的辦法似乎是使用netTcpBinding。

+0

是的,我通過IIS託管它。正如我所提到的,我可以通過客戶機上的瀏覽器訪問它 –

+0

您確定客戶機配置中的服務URL是正確的嗎? 'http:// 95.138.188.232/autofxtools/service.svc' –

+0

另外,你在客戶端配置中提供'clientBaseAddress =「http://95.138.188.232:8000/myClient/」'也是正確的? –