2012-03-16 69 views
3

我看到這裏到處這個問很多次,但我不能左右我的頭的IIS應用程序啓用它。WCF異常:...這個服務需要「匿名」身份驗證,但它沒有爲承載此服務

這是我想要做的。我需要在IIS 6中託管WCF服務。我希望用戶名/密碼安全,並且我不希望這些傳遞未加密,所以我使用的是HTTPS。我在我的IIS上本地工作,但是當我部署它時,我得到匿名訪問未啓用錯誤。在我的本地IIS上啓用了匿名訪問,在部署的服務器上它不是,我們不想啓用它。問題理解。解決方法不是明顯對我....

如果我瀏覽網頁的IE,還是從Visual Studio中添加服務引用,我得輸入我的用戶名/密碼後,這個錯誤。所以這表明我的證書和HTTPS工作正常,並且用戶名和密碼是正確的。下面是web.config中的相關設置:

<services> 
    <service name="SecureWcfTestsApplication.Service1"> 
    <endpoint address="" 
     binding="wsHttpBinding" 
     bindingConfiguration ="Binding2" 
     contract="SecureWcfTestsApplication.IService1" /> 
    </service> 
</services> 

<bindings> 
    <basicHttpBinding> 
    </basicHttpBinding> 
    <wsHttpBinding> 
    <binding name="Binding2"> 
     <security mode="TransportWithMessageCredential"> 
     <message clientCredentialType="Windows" algorithmSuite="Default" /> 
     </security> 
    </binding>   
    </wsHttpBinding> 
</bindings> 

我使用的wsHttpBinding,因爲它不喜歡與clientCredentialType設置爲Windows basicHttpBinding的。話雖如此,我寧願使用basicHttp,但它希望UserName作爲clientCredentialType,我不確定UserName和Windows安全性之間有什麼不同。

最佳

回答

1

你唯一的例外是正常的,如果你不使用Windows身份驗證配置傳輸的安全性,需要在這種情況下http://msdn.microsoft.com/en-us/library/ms733089.aspx

<transport>標籤,儘管你已經有了<message>標籤已定義。

+0

嗨 - 我加了這一點,仍然得到同樣的錯誤 - 我現在有這樣的: <的wsHttpBinding > <綁定名稱= 「Binding2」> <安全模式= 「TransportWithMessageCredential」> <消息clientCredentialType = 「視窗」 algorithmSuite = 「默認」/> <傳輸clientCredentialType = 「視窗」/> – RBrowning99 2012-03-20 17:13:08

+0

在任何情況下e後來發現這是我發現的最簡單的方法。 <服務名稱= 「SecureWcfTestsApplication.Service1」> <端點地址= 「」 結合= 「basicHttpBinding的」 bindingConfiguration = 「Binding2」 合同= 「SecureWcfTestsApplication.IService1」/> <綁定名稱= 「Binding2」> <安全模式= 「運輸」> <傳輸clientCredentialType = 「視窗」/> RBrowning99 2012-03-21 03:51:00

0

匿名身份驗證就可以了,在某些情況下,必須爲服務啓用,但不是網站。

因此,檢查您的網站的「根」認證只有啓用了Windows身份驗證。然後展開您的網站,選擇'服務'文件夾,並確保您的服務啓用了Windows和匿名身份驗證。

至少我有相同的錯誤消息基本MSSQL主數據服務網站&服務,這是解決方案。我在運行服務時確實遇到了錯誤,但網站幾乎可以正常工作,MDS Explorer無法工作,因爲服務的身份驗證設置起初是錯誤的。創建新的MDS站點時,這種未命中配置的原因可能是MDS配置管理器中的一個錯誤?

所以在我的情況下,這個問題不是通過對web.config和ApplicationHost.config文件進行任何特殊編輯來解決的,而只是爲網站選擇正確的身份驗證設置,並且它是IIS管理器中的服務。我不確定這是否屬於這種情況,但可能值得嘗試?

0

在一個特別愚蠢的時刻,我也收到此錯誤:

WCF異常:......這個服務需要「匿名」身份驗證,但它沒有爲承載此服務的IIS應用程序啓用

我終於意識到我的web.config在「system.web」中根本沒有「認證」標籤。難怪IIS正在抱怨認證問題!

解決的問題是一樣簡單增加:

<system.web> 
    <authentication mode="Windows" /> 

愚蠢,我知道......但我希望這有助於!

1

在IIS管理器中單擊您的網站。您需要在「功能視圖」中(而不是「內容視圖」)

在「功能視圖」的IIS部分選擇所謂的功能「身份驗證」,然後單擊它。在這裏您可以啓用Windows身份驗證。這也是可能的(我認爲在線程中的一個建議)通過web.config中的設置(...)

但也許你有一個web.config你不想過分與...一起。然後,這個線程不會是太大的幫助,這就是爲什麼我添加了這個答案