2010-11-08 28 views
7

我正在將應用程序從.net 1.1升級到3.5。這個應用程序連接到WCF服務。以前,Web服務客戶端配置爲使用安全令牌,就像這樣:如何在WCF中設置安全令牌?

RegistrationWSWse registrationService = new RegistrationWSWse(); 
Microsoft.Web.Services2.Security.Tokens.UsernameToken token = new Microsoft.Web.Services2.Security.Tokens.UsernameToken("some username", "some password", Microsoft.Web.Services2.Security.Tokens.PasswordOption.SendPlainText); 
registrationService.RequestSoapContext.Security.MustUnderstand=false; 
registrationService.RequestSoapContext.Security.Tokens.Add(token); 

現在我已經添加在Visual Studio中的Web服務的新服務引用,但自動生成的代碼不提供任何形式設置安全標題,如上所述。

這是需要在配置文件system.serviceModel部分配置的東西嗎?


更新

的原因,我沒有看到用戶名/密碼屬性是因爲我的服務接口,而不是實際的實現類的工作。

我能夠通過強制轉換實例的類型來設置這些東西,就像這樣:

((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.UserName = userName; 
((RegistrationWSClient)registrationWs).ChannelFactory.Credentials.UserName.Password = password; 

你必須做其他重要的事情就是更新客戶端app.config文件。如果你不這樣做,用戶名/密碼將不會被設置在SOAP頭中。例如:

<security mode="TransportWithMessageCredential" /> 

回答

1

結賬this article on MSDNThis post也有關於你的問題的一些很好的信息。

+0

感謝您的鏈接Kamyar。問題是我正在與服務接口進行交互,而不是代理類。我只需要進行轉換來設置用戶名/密碼 - 參見上文。 – 2010-11-09 17:17:05

+0

@保羅:很高興你的工作。我也學到了一些新東西。謝謝。 – Kamyar 2010-11-09 18:23:03