2011-06-06 72 views

回答

4

爲了從客戶端調用WCF服務,您需要一個代理(除非您想親自對SOAP請求進行硬編碼,這並不容易,尤其是在處理安全性時)。代理可以使用其中一種工具來創建代理(添加服務引用,svcutil等),也可以使用ChannelFactory<T>創建。如果您使用的是生成的代理,則使用代理的ClientCredentials屬性(繼承自基類ClientBase<T>。如果使用ChannelFactory<T>,則將它們設置爲通道工廠的Credentials屬性。

+0

另外,您需要在打開通道之前設置憑據。 – 2011-06-07 00:12:11

4

以下是示例代碼:

EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8888/TestSevice"); 
WSHttpBinding wsHttpBinding = new WSHttpBinding(); 
ChannelFactory<ISomeServiceInterface> iFactory = new ChannelFactory<ISomeServiceInterface>(wsHttpBinding, endpointAddress); 

var clientCredentials = new ClientCredentials(); 
clientCredentials.UserName.UserName = "sudipto"; 
clientCredentials.UserName.Password = "sudipto"; 

iFactory.Endpoint.Behaviors.RemoveAll<ClientCredentials>(); 
iFactory.Endpoint.Behaviors.Add(clientCredentials); 

var isomeService= iFactory.CreateChannel(); 
isomeService.SomeFunctionToCall("parameterToTheService");