我也不相信 - 我會向任何有興趣的人展示加入我!VIsual Studio 2010保留到WCF服務參考密碼?
這是交易。兩臺計算機與添加服務引用的行爲不同。
計算機1 - 我會打電話給他BigMac
電腦2 - 我會打電話給他Littlemac
我寫了一篇關於BigMac的Web服務。和一個Windows客戶端應用程序來調用它。所有作品都很棒。部署到客戶端的計算機,所有工作都很好。我們決定保護服務器,以便消費者必須將Windows用戶名/密碼傳遞給服務,我們將使用Https。 8小時後,在這裏和其他地方進行了大量搜索,我找到了答案。服務器配置。看起來像這樣:
<services>
<service name="SecureWcfTestsApplication.Service1">
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration ="Binding2"
contract="SecureWcfTestsApplication.IService1" />
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="Binding2">
<security mode="Transport">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
</bindings>
將其部署到遠程服務器上。轉到任何Web瀏覽器,輸入服務URL,輸入用戶名和密碼,然後獲取服務描述。都好。
但是 - 客戶端代碼可以調用它而不提供任何憑據。
客戶端代碼僅僅是這樣的:
remote.Service1Client服務1 =新remote.Service1Client(); service1.GetData(20);
就是這樣。它從Visual Studio中運行,並作爲exe。如果我將exe複製到另一臺機器上,它不會運行。
好的 - 在BigMac(同一臺計算機)上開始一個新項目 - 這裏沒有服務實現只是一個Windows應用程序。我添加了遠程服務引用,但它又不要求輸入用戶名和密碼。我可以在沒有任何憑證的情況下致電該服務。
轉到LittleMac。打開網頁瀏覽器並導航到服務 - 我需要一個用戶名/密碼。打開Visual Studio,添加服務引用 - 我需要用戶名/密碼。客戶端代碼需要設置用戶名/密碼。
我重新啓動BigMac - 從頭開始 - 新項目 - 添加Web引用 - 不需要密碼並且運行。
Wtf?任何人?
最佳
雷
嘿 - 感謝有它刺傷。如果你所說的是正確的 - 有沒有什麼辦法可以「解密」這臺計算機,因爲這實際上可能會導致一些問題呢?在這臺機器上,我忘記在代碼中設置憑據,但無論如何它都能正常工作。但是它在部署時不起作用,會嗎? – RBrowning99 2012-03-22 17:15:48
我不知道你是否能夠避免自動認證,因爲WCF沒有問你爲你做。不,如果您將它部署到另一臺計算機上,它將無法正常工作,正如您在另一臺計算機上部署它時看到的那樣。 – 2012-03-22 21:35:37
再次想到,您可以嘗試將ClientCredentialType設置爲「密碼」(請參閱http://msdn.microsoft.com/zh-cn/library/ms733836.aspx),那麼理論上它應該會詢問您的憑據,即使您已經通過身份驗證。我很抱歉,但我現在沒有時間去嘗試。 – 2012-03-23 08:09:57