2010-07-01 63 views
1

我有一個WCF服務託管在Windows服務中,並具有net.tcp端點。客戶端與服務位於同一LAN(工作組)中,但它們沒有服務器的Windows用戶帳戶。這種情況下正確的WCF net.tcp綁定安全性是什麼?

PS:當我在客戶端和服務器設置Security.Mode到無,我收到以下錯誤:

The requested upgrade is not supported by '{SERVICE ADDRESS}'This could be due to mismatched bindings (for example security enabled on the client and not on the server).

回答

1

OK,我解決了這個問題。

我不知道爲什麼會是這樣,但如果我取消了在服務器中的文件夾選項「使用簡單文件共享」,一切都完美的作品。

3

Nettcp結合是安全在默認情況下,客戶必須提供Windows憑據,因爲所有消息都通過tcp進行簽名和加密。它設置爲none可能會導致一個問題,你會希望是這樣的:

<netTcpBinding> 
    <binding name="netTcp"> 
     <security mode="Transport"> 
     <transport clientCredentialType="Windows" /> 
     </security> 
    </binding> 
</netTcpBinding> 
+0

感謝您的答覆。但正如我所提到的,客戶端沒有服務器中可用的用戶帳戶,所以Windows身份驗證將失敗。我試着給client.ClientCredentials.Windows.ClientCredential用戶名和密碼設置爲一個服務器的用戶是管理員,但沒有運氣,它仍然失敗。 – mrtaikandi 2010-07-01 19:55:05

0

我有自託管的net.tcp服務和他們很好地工作或沒有安全,其實,你可以承載相同的端口,這讓防火牆設置簡單多個安全和不安全的net.tcp合同。

如果關閉簡單文件共享是什麼讓您的客戶端/服務工作,那麼我懷疑你選擇了託管服務的端口也由簡單文件共享使用。

0

如果上述任何解決方案並不爲你工作,然後嘗試從端點刪除身份,如下圖所示:

<endpoint address="net.tcp://127.0.0.1/FacilitySchedulesService/FacilitySchedulesService.svc" 
       binding="netTcpBinding" bindingConfiguration="FacilityScheduleDSTCP" 
       contract="FacilitySchedules.IFacilitySchedulesService" name="FacilityScheduleDSTCP"> 
     <!--<identity> 
      <userPrincipalName value="abc" /> 
     </identity>--> 
     </endpoint> 
相關問題