我们正在做一个 WCF REST json 服务 (WebHttpBinding)。由于纯 WCF 会话不适用于这种绑定,因此我们使用的是 asp.net 会话。所以我们设置:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
在我们的 web.config 中,并且:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
在我们的服务实施之上。我们有几种服务方式,例如:
public void OpenSession(string userName)
public void GetSomething(int somethingId)
public void CloseSession()
然后我们在每个方法中测试HttpContext的sessionId。
HttpContext.Current.Session.SessionID
问题是:它总是在变化。如果我在我的网络浏览器中调用OpenSession?userName='toto',然后再调用 GetSomething?somethingId=1234,会话 ID 将会改变。
wcf 似乎没有很好地处理 cookie。如果我在提琴手中调用 OpenSession 方法,则在 http 标头中,服务没有返回“Set-Cookie”。