9

我有一个简单的 WCF 服务,它允许客户端/消费者应用程序通过提供用户名和密码来登录。如果用户名和密码都正确,WCF 服务会为客户端提供一个 GUID。GUID 和用户名随后作为键/值对存储在 WCF 服务中。从这里开始,客户端将其 GUID 与每个请求一起发送,作为识别手段。

由于我将键/值对存储在 Dictionary/Hashmap 中,因此这种方法仅在 WCF 服务是有状态的情况下才有效。问题是,它们在默认情况下是有状态的,还是我必须做些什么才能让它们以这种方式表现?

4

2 回答 2

9

每次调用服务是 Windows Communication Foundation 默认的实例化模式。因此,默认情况下,WCF 服务不维护状态。正如 Marc 所说,在 WCF 服务中保存状态存在潜在问题。我强烈建议听从他的建议。

本文介绍了在 WCF 中处理实例管理的各种方法,包括如何按照您的要求维护状态。

Juval Lowy 出色的 Programming WCF 服务(链接)的第 4 章更详细地介绍了这一点。

于 2011-05-18T20:33:15.457 回答
4

默认情况下它们是无状态的,如果可能的话,我强烈建议保持这种状态。但是,如果由于某种原因您无法启用,您可以启用状态。

您必须使用 wsHttpBinding 或 wsDualHttpBinding,然后将 ServiceContract(MSDN 链接)的 SessionMode 设置为允许或必需。进入更详细的内容。

于 2011-05-18T20:30:15.580 回答