2010-05-17 66 views
2

我想測試一個簡單的WCF tcp.net客戶端/服務器應用程序。 WCF服務託管在Windows 7 IIS上。我在IIS中啓用了TCP.net。我通過配置具有管理權限的應用程序池並將IIS服務應用程序設置爲在上下文中運行,從而授予自由安全權限以服務應用程序。WCF tcp.net客戶端/服務器連接失敗「流安全性是必需的」

我啓用了對服務應用程序進行跟蹤以進行故障排除。每當我運行一個針對WCF客戶端應用程序的服務的簡單方法調用時,我會得到以下例外:

「流安全性需要在http://www.w3.org/2005/08/addressing/anonymous,但沒有協商安全上下文,這很可能是由於遠程端點丟失來自綁定的StreamSecurityBindingElement。「

這裏是我的客戶端配置:

<bindings> 
    <netTcpBinding> 
    <binding name="InsecureTcp"> 
     <security mode="None" /> 
    </binding> 
    </netTcpBinding> 
</bindings> 

這裏是我的服務配置:

<bindings> 
    <netTcpBinding> 
    <binding name="InsecureTcp" > 
     <security mode="None" /> 
    </binding> 
    </netTcpBinding> 
</bindings> 

<services> 
    <service name="OrderService" behaviorConfiguration="debugServiceBehavior"> 
    <endpoint 
     address="" 
     binding="netTcpBinding" 
     bindingConfiguration="InsecureTcp" 
     contract="ProtoBufWcfService.IOrder" /> 
    </service> 
</services> 

<behaviors> 

    <serviceBehaviors> 
    <behavior name="debugServiceBehavior"> 
     <serviceDebug includeExceptionDetailInFaults="true" /> 
    </behavior> 

    </serviceBehaviors> 
</behaviors> 

回答

2

WCF不喜歡不安全的通信 - 它希望在默認情況下使用安全可靠的通訊渠道。 netTcpBinding的默認安全模式是具有Windows憑據的傳輸級別安全性。你可以使用該默認值而不是關閉所有東西?

如果您的服務器計算機和所有調用它的客戶端位於同一公司局域網上,在防火牆後面,則不使用Windows憑據是沒有意義的。要做到這一點,用這個綁定配置:

<bindings> 
    <netTcpBinding> 
    <binding name="InsecureTcp"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
    </netTcpBinding> 
</bindings> 

的安全功能非常快,往往在硬件中實現您的網卡上,並利用組織內部的Windows憑據通常是最好的一段路要走。

那麼爲什麼你在netTcpBinding上禁用了所有安全性,並讓自己陷入這種麻煩?

+0

WCF是一個程序,不是一個人,喜歡或​​不相像的東西。這是誤導性的,因爲也可以將WCF配置爲不安全的通信方案。此外,你不給出例外的理由。 – 2015-10-30 18:59:16

+0

@DanielLeiszen:好吧,WCF的**設計師**不喜歡不安全的通信 - 是「個人」足夠嗎? – 2015-10-30 22:19:18

+0

不安全通信(https://msdn.microsoft.com/en-us/library/ms734784(v=vs.110)。aspx)由WCF支持,並且對於開發和測試目的是可接受的方案,或者不需要任何安全性的通信。該問題沒有具體說明案件的具體情況,因此無法確定該具體方案是否符合這些建議。但是,有關的例外和問題仍然沒有答案。我真的對它的原因感興趣,因爲我遇到了同樣的錯誤。所以,如果你知道答案,請分享。 – 2015-10-30 22:57:14

0

Macr_s答案正在爲Windows 2008的

做,當你試圖在上述本地/開發Windows 7的音符,事情將出保障工作。

請不要修改您的應用程序池,使用默認值應用程序池,它是工作

相關問題