我正在寻找存储在WCF登录过程中获取的信息的最佳实践,并使其可用于任何后续服务调用(属于同一会话)。
基本上我写了自己的登录提供程序:
public class CustomAuthenticator : UserNamePasswordValidator
{
public override void Validate(string userName, string password)
{
if (username == "test" && password == "test")
{
int id_I_want_to_use = getUserID(username);
}
}
}
我有一项服务,需要稍后在
上使用该IDpublic void someService(int itemID)
{
getSomeInfo(id_I_want_to_use, itemID);
}
我遇到的问题是我无法找到有关如何正确存储此信息的任何好信息。我查看了instanceContext,但我希望能够完成所有这个服务器端。我看到了一些关于使用asp遗留支持来使用HTTP会话来存储数据的信息,但这并不是我想要的。我正在尝试使用当前技术保留所有内容,如果我能帮助它,我不想被绑定到http绑定。
我可能完全错误地接近这个,但这基本上就是我要问的原因。
答案 0 :(得分:1)
执行此操作的方法是使用实例上下文,您只需按会话标记合同
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
class MyService : IMyContract {...}
这是所有服务器端。您需要在客户端上执行的唯一操作是保持代理处于打开状态,以使会话保持活动状态。
有关详细信息,请参阅:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx