C# 如何在从windows phone 7调用的WCF服务中配置会话?

C# 如何在从windows phone 7调用的WCF服务中配置会话?,c#,silverlight,wcf,windows-phone-7,C#,Silverlight,Wcf,Windows Phone 7,我有一个从WP7调用的服务。我知道WP7(Silverlight)直到今天才支持BasicHttBinding,不幸的是它不支持会话,所以我不能使用InstanceContextMode.PerSession和SessionMode.Required。但我在服务器上有一些数据,我需要在会话的基础上保存它们。我有什么选择?我不熟悉Windows Phone 7编程,但如果它允许您使用basicHTTPContextBinding,这是basicHTTPBinding的一种风格,那么我建议您研究一种

我有一个从WP7调用的服务。我知道WP7(Silverlight)直到今天才支持BasicHttBinding,不幸的是它不支持会话,所以我不能使用InstanceContextMode.PerSession和SessionMode.Required。但我在服务器上有一些数据,我需要在会话的基础上保存它们。我有什么选择?

我不熟悉Windows Phone 7编程,但如果它允许您使用basicHTTPContextBinding,这是basicHTTPBinding的一种风格,那么我建议您研究一种持久服务

持久服务允许您将会话状态保存在一些持久性存储中,并通过令牌通过每次新方法调用访问会话状态

看看这篇博客文章

即使您不能创建一个正式的持久服务,您也可以使用类似的想法创建一些东西——传递一个令牌(login/userid或其他东西)并从持久性存储中读取状态——数据库表或其他东西


让我们知道,如果你得到它的工作

您可以在服务器端的静态类中使用ConcurrentDictionary,以用户身份作为密钥缓存对象。如果您需要缓存很长一段时间,您将希望在Windows服务中托管该服务,以避免应用程序池循环等问题。

如果您向我们提供一个示例,说明您认为哪些类型的数据需要通过会话持久化,我们可以提供更好的建议。有一种登录方法,它实例化了第三方SDK的一个对象,并将我记录在该第三方系统中。还有其他方法也使用登录方法中设置的第三方对象。然而,由于没有保留任何内容,我不能使用在login方法中创建的对象。哦,是的!我不能直接从wp7打这个电话给第三方。因此,请不要建议该选项。第三方SDK的登录方法需要多长时间?您的解决方案看起来很有希望。我会在星期一试试,然后告诉你。谢谢如何从该词典中删除这些条目?我应该在什么基础上删除?还是让字典继续增长?取决于你有多少用户。如果数量不多,那么是的,你可以让它继续增长。如果数量很多,那么您需要将对象包装在一个类中,该类还包含一个日期时间,指示您何时将元素放入缓存中。然后,您可以在计时器上运行后台任务,该计时器显示:如果元素在其中已存在x个时间段,请从字典中删除。也可以使用ASP.NET内置缓存: