我正在尝试掌握 WCF 实例化,但在会话方面遇到了麻烦。我对它如何工作的假设是不正确的,或者我遗漏了一些东西。
在我的服务合同(实现而不是接口)上,我已将服务行为的 InstanceContextMode 设置为 PerSession。我在服务中有一个名为“word”的私有字符串,它只是一个空字符串,还有 2 个方法,1 个将 word 变量设置为指定值,1 个用于检索它。
我在 MVC 应用程序中添加了服务引用,然后执行以下调用:
- 获取单词()
- SetWord("测试")
- 获取单词()
正如我所料,第一次调用返回一个空字符串。SetWord 正在更新私有变量并按照我的预期重新调整该值。然而,对 GetWord() 的第二次调用返回一个空字符串,我原以为它会返回“test”。
如果我将 InstanceContextMode 更改为“Single”,我会从对 GetWord 的最终调用中得到“测试”(正如我所料),但我不明白为什么我不会从 PerSession 中得到相同的结果。
谁能帮我理解我哪里出错了?