WCF服务默认是无状态的吗?

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

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

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

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

Juval Lowy的优秀编程WCF服务( 链接 )的第4章详细介绍了。

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

您必须使用wsHttpBinding或wsDualHttpBinding,然后将ServiceContract( MSDN链接 )的SessionMode设置为允许或必需。 进一步详细说明。