2012-07-03 26 views
1

我必須通過WCF使用HTTP基本認證來使用3個Web服務(Sharepoint/Alfresco/Documentum CMIS)。WCF基本認證服務,不發送401但是500代替

隨着Sharepoint或Alfresco,第一個請求去沒有授權標題,收到HTTP 401,由WCF與頭自動重試,一切都很好。

但與Documentum,我收到HTTP 500和一個SOAP Fault,所以WCF永遠不會有機會發送頭並按原樣返回異常。

我當然可以通過HttpRequestMessageProperty手動添加標題,但這看起來像是一個醜陋的黑客給我。是否有任何可以在WCF端上配置的第一個請求發送標頭,或在Documentum方面返回401?

+0

你的問題沒有說明WCF是用在客戶端還是服務器端,但我假設客戶端。現在,HTTP 500是一個服務器端錯誤。它不應該作爲響應發送,指示需要身份驗證,並且如果服務器正在這樣做,則會被破壞。如果由於某些其他原因正在發送500錯誤,則服務器已損壞。所以我建議這個問題的修復不在客戶端(在WCF中)。它位於Documentum的服務器端,因爲無論客戶端輸入如何,服務器都不應該發出500,除非遇到錯誤。 – Cheeso

+0

是的,WCF位於客戶端。遺憾的是,(幾乎)沒有人會升級他們的Documentum安裝,因爲a)它花費大量金錢,並且b)擔心打破現有部署,所以我必須找到客戶端解決方法。 – wizzard0

回答

0

您可以嘗試將Documentum服務與另一個正常運行的Web服務器相連接,並將請求傳遞通過?

我實現了一些類似的方法,使用IIS來訪問Apache Tomcat以使用Windows身份驗證,並使用isapi_redirect.dll過濾器來傳遞請求。關於這方面的更多信息可以在這裏找到:http://tomcat.apache.org/connectors-doc/reference/iis.html

不知道是否有類似的東西是你的選擇,但它可以提供一個更簡單的代碼解決方案。