2011-12-28 60 views
1

我想通過會話管理對WPF客戶端進行身份驗證。 首先,用戶在wpf表單的幫助下將訪問WCF服務,並將生成外部事件ID,並且如果用戶再次想要訪問該服務,而不是使用用戶名和密碼進行身份驗證,那麼我們想要使用該外部事件ID進行身份驗證在上一步中生成。通過SessionId進行WCF服務身份驗證

那麼請提出什麼可能是獲得理想輸出的最佳方式?

我沒有使用web.config文件。在C#代碼,而不是我使用的配置部分,低於: -

[ServiceContract(SessionMode=SessionMode.Required)] 
public interface Iexecute { 
    [OperationContract] 
    string loginUserName(); 

    [OperationContract] 
    string LoginPassword(string SessionId); 
} 

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] 
public class Execute : Iexecute, IDisposable 

configuartion的另一部分是: -

ServiceHost host = new ServiceHost(typeof(Execute), new Uri("net.tcp://localhost:4233"))) { host.AddServiceEndpoint(typeof(Iexecute), new NetTcpBinding(), "Execute"); 
NetTcpBinding tcpsessionBinding = new NetTcpBinding(); tcpsessionBinding.ReliableSession.Enabled = true; tcpsessionBinding.ReliableSession.InactivityTimeout = TimeSpan.FromMinutes(25); 
+0

你說的是訪問相同的服務/方法一旦使用用戶名/密碼,然後使用的sessionId? – Kangkan 2011-12-28 12:01:40

+0

是的,你是對的Kangkan.But我不知道這是否是正確的方式來實現身份驗證服務。那麼你能否爲我提供實現身份驗證的最佳方式(可以通過用戶身份驗證或sessionId生成來完成) – user1119188 2011-12-29 10:16:38

+0

但是這種需求的動機是什麼?你想在服務上進行一些會話嗎?如果認證的發生與第一次相同,那麼問題是什麼?畢竟這對用戶是透明的。 – Kangkan 2011-12-29 10:37:53

回答

0

如果你想使用會話WCF服務的話,你必須使用單代理客戶端的服務。來自同一客戶端的同一個服務的多個代理將創建一個新的會話。它最好在客戶端使用單例代理可以滿足您的需要。

請參閱本玲的WCF會話和實例管理

http://msdn.microsoft.com/en-us/magazine/cc163590.aspx#S2

+0

是的,你是對的。 – user1119188 2011-12-29 10:01:23

+0

是的,你是對的Kangkan.But我不知道這是否是正確的方式來實現身份驗證服務。所以你能否提供我實現身份驗證的最佳方式(可以在用戶身份驗證或sessionId生成的幫助下完成) – user1119188 2011-12-29 10:15:17

相關問題