2011-12-28 63 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

相关问题