![]() |
1
6
[更新]: 这里也有一篇好文章: http://blogs.msdn.com/drnick/archive/2008/10/08/working-with-session-state.aspx 当转移到WCF时,有时会混淆ASP.NET开发人员的一个概念是会话状态的概念。在普通的WCF服务中,所有会话状态都存储在本地易失性内存中。应用程序必须选择将会话状态的一部分复制到持久存储位置,以便在运行的实例中保留该状态。WCF没有内置选项来启用会话状态的持久存储或启用从其他进程访问会话状态。 有几种方法可以使WCF更像ASP.NET。 使WCF更像ASP.NET的一种方法是通过打开ASP.NET兼容模式使WCF与ASP.NET完全相同。承载在IIS中并使用HTTP作为传输绑定的WCF应用程序与ASP.NET管道一起运行,但无法访问许多ASP.NET功能。打开兼容模式将WCF应用程序与ASP.NET管道集成,并使许多功能可用。显然,只有当您的WCF服务已经非常类似于ASP.NET应用程序时,这种方法才有趣。 另一种使WCF更像ASP.NET的方法是将WCF会话状态的管理更改为使用远程持久存储,而不是本地易失性内存。这种方法更像是工作流服务用来创建持久应用程序的方法。服务实例和实例上下文的管理由创建和销毁服务对象的iInstanceProvider、创建和销毁实例上下文的iInstanceContextProvider以及设置新获取的实例上下文的iInstanceContextInitializer控制。尽管持久服务的语义不同于会话状态,但有一些通用的构建块可以同时用于这两种情况。 [更新] 除了上述几点,我还可以向您提出一些建议。请看这篇文章: https://stackoverflow.com/questions/275926/wcf-data-presistence-between-sessions .接下来,考虑使用某种形式的缓存。这可以是缓存样式的服务,也可以是缓存场。有关缓存的更多信息,请查看我在此处的帖子: System.Web.Caching vs. Enterprise Library Caching Block 这基本上允许您为用户存储一个唯一的密钥(类似于会话ID),并且该用户的所有所谓会话对象都将以缓存层中的用户伪会话ID作为前缀。这个缓存层可以被用来运行站点的网站以及各种WCF服务/项目调用。 |
![]() |
2
2
好吧-所以在晚上我发布我最初的问题可能太晚了!用户的ASP.NET会话状态似乎可以从通常位置的服务代码中获得,即-
|
![]() |
user1946932 · .Net正则表达式在所有字符前添加空格 6 月前 |
![]() |
TSDrake · 发布ASP。没有特定文件夹的.NET应用程序 7 月前 |
![]() |
Vengat Ramanan · 用户登录Asp时隐藏导航和页脚。网络核心 11 月前 |
![]() |
ramamoorthy_villi · 输入验证错误外键字段 11 月前 |