我已經給出了一個用Java編寫的Web服務,我無法對其進行任何更改。它要求用戶通過基本身份驗證進行身份驗證才能訪問任何方法。在.NET中與此服務交互的建議方式是使用安裝了WSE 3.0的Visual Studio 2005。使用WCF無法使用基本身份驗證調用Web服務
這是一個問題,因爲該項目已經使用Visual Studio 2008(針對.NET 2.0)。我可以在VS2005中做到這一點,但是我不想將這個項目與VS2005聯繫起來,或者通過在VS2005中創建一個程序集並將其包含在VS2008解決方案中來實現(不管將來如何改變程序集)。我認爲這些選項中的任何一個都會讓新開發人員變得複雜,因爲他們強迫他們安裝WSE 3.0,並且使該項目未來能夠在.NET 3.5中使用2008和功能......也就是說,我真的相信使用WCF是要走的路。
我一直在尋找到使用WCF對於這一點,但我不能確定如何讓WCF服務,以瞭解它需要與每個請求一起發送認證報頭。當我嘗試對Web服務執行任何操作時,出現401錯誤。
這是我的代碼如下所示:
WebHttpBinding webBinding = new WebHttpBinding();
ChannelFactory<MyService> factory =
new ChannelFactory<MyService>(webBinding, new EndpointAddress("http://127.0.0.1:80/Service/Service/"));
factory.Endpoint.Behaviors.Add(new WebHttpBehavior());
factory.Credentials.UserName.UserName = "username";
factory.Credentials.UserName.Password = "password";
MyService proxy = factory.CreateChannel();
proxy.postSubmission(_postSubmission);
這將運行,並拋出以下異常:
The HTTP request is unauthorized with client authentication scheme 'Anonymous'. The authentication header received from the server was 'Basic realm=realm'.
這有一個內部異常:
The remote server returned an error: (401) Unauthorized.
任何想法可能會導致這個問題將不勝感激。
馬克,你能告訴我如何編寫代碼和配置,如果它是REST基於Java的服務? – rajibdotnet 2012-12-04 15:19:19
在我鍵入代理後,屬性ClientCredentials完全不顯示。 – rajibdotnet 2012-12-04 15:29:47
@rajibdotnet:好的,問題中的代碼基本上就是你需要調用基於REST的服務....如果這沒有幫助:請**問你自己的問題**所以人們可以回答... – 2012-12-04 15:32:08