禁用WCF服务的会话

时间:2012-03-29 12:52:35

标签: asp.net wcf wcf-data-services

我正在尝试通过更改服务合同来禁用WCF服务的会话

[ServiceContract(Namespace = "http://company.com/Services/", SessionMode = SessionMode.NotAllowed)]
public interface IService
{ }

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service: IService
{ }

然后我用调试器进入Operation,我可以看到HttpContext.Current.Session是有效的对象。

我对WCF操作的可用会话状态缺少什么?

2 个答案:

答案 0 :(得分:2)

这是一个老问题,但禁用ASP.Net会话RequirementsMode应该是AspNetCompatibilityRequirementsMode.NotAllowed

答案 1 :(得分:0)

您可以使用Instance上下文模式。见:http://msdn.microsoft.com/en-us/magazine/cc163590.aspx

您有3种选择:

  • Singleton,只有一个所有来电共享的服务实例
  • 每个会话,同一会话直到客户端代理关闭
  • 每次通话,在通话结束后立即处理

听起来你所追求的是每次通话。您可能能够在调试器中看到会话对象,但是一旦调用返回它就会被释放。