Asp.net会话似乎不适用于WCF WebHttpBinding

时间:2011-06-29 08:15:22

标签: wcf session webhttpbinding

我们正在进行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”。

1 个答案:

答案 0 :(得分:1)

我发现:

  

默认情况下,WCF没有cookie   在客户端启用。所以当   您需要服务器需要Cookie   打开绑定上的cookie   通过财产为客户   HttpTransportBindingElement.AllowCookies。

这是在这篇文章中。检查它是否对您有用:http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx