C# · 12月 27, 2021

c# – 默认情况下WCF服务是否无状态?

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

由于我将密钥/值对存储在Dictionary / Hashmap中,所以这种方法只有在WCF服务有状态时才有效.问题是,他们默认是有状态还是有什么我要做的,以使他们以这种方式行事?

解决方法 每个呼叫服务是 Windows Communication Foundation默认实例化模式.因此,默认情况下,WCF服务不会保持状态.正如Marc所说,在WCF服务中保存状态有潜在的问题.我强烈建议听从他的意见.

这个article描述了处理WCF中的实例管理的各种方法,包括如何维护状态.

Juval Lowy的优秀编程WCF服务(link)的第4章更加详细.