我们正在进行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。如果我在fiddler中调用OpenSession方法,在http标头中,该服务没有返回“Set-Cookie”。
答案 0 :(得分:1)
我发现:
默认情况下,WCF没有cookie 在客户端启用。所以当 您需要服务器需要Cookie 打开绑定上的cookie 通过财产为客户 HttpTransportBindingElement.AllowCookies。
这是在这篇文章中。检查它是否对您有用:http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx