1

我们正在做一个 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”。

4

1 回答 1

1

我找到 :

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

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

于 2011-06-29T09:51:08.130 回答