我幫助別人使用Visual Studio工具應用到InfoPath應用程序連接到使用WCF,需要一個用戶名和密碼寫服務的SOAP發送標題(clientCredentialType =「UserName」)。該服務使用basicHttpBinding。消費WCF服務隨着ClientCredentialType =「用戶名」從.net 2.0
InfoPath中2010依賴於Visual Studio工具2005應用程序,因此我堅持必須添加一個「Web引用」而非「服務引用」。我以前從來沒有這樣做過,試圖弄清楚如何做到這一點變得非常困難。
在服務引用我只是說:
service.Credentials.UserName.UserName = "username";
service.Credentials.UserName.Password = "password";
但是,當使用Web引用憑據屬性,行爲不同費時,我不能讓它自動傳遞的SOAP頭中的用戶名和密碼。
我已經嘗試了一些事情,包括這些沒有運氣:
MyService service = new MyService();
CredentialCache cache = new CredentialCache();
// I've tried "Basic" and string.Empty as well in the place of "UserName"
cache.Add(new Uri(service.Url), "UserName", new NetworkCredential("username", "password"));
service.Credentials = cache;
service.PreAuthenticate = true;
service.MyMethod();
和
MyService service = new MyService();
service.Credentials = new NetworkCredential("username", "password");
service.MyMethod();
,但沒有運氣可言。在服務上記錄整個消息,用戶名和密碼根本不包含在SOAP頭中,我收到以下錯誤:「驗證消息的安全性時發生錯誤。」
嗨,這有什麼好運?我需要類似的東西。在我的情況下,我正在尋找一種方法來在SOAP頭中的java應用程序傳遞用戶/密碼,以便通過wcf服務進行驗證。謝謝! – Roberto
答案真的只是你無法從.Net 2.0自動完成。然而,在Java的情況下,答案可能完全不同。我已經通過手動構建SOAP併發布到服務器中去了Android應用程序中的懶惰路線(當然是Java)。 – omatase