2011-10-27 41 views
2

如果我将servis实例设置为Per Session或Single,我可以在会话中的服务实例之间发送一些数据?它应该在Asp.net会话中完成 - HttpContext.Current.Session 或wcf有自己的会话吗?在wcf中使用会话

+0

oK,据我所知,但我可以使用Wcf会话像asp一样并将数据保存在其中吗? – netmajor

回答

9

正如我所说 - WCF不是ASP.NET,它的会话处理有很大的不同。虽然ASP.NET会话和WCF会话被称为相同 - 它们的用途和用处大不相同。

阅读MSDN页面Using Sessions in WCF了解更多详情。

一句话如下:没有与WCF会话关联的通用数据存储。 - 所以答案是否定的 - WCF中的会话是用于数据存储的而不是

WCF会话仅仅是将几个消息“捆绑”在一个对话中。默认情况下,通过“per-call”模型,每个WCF服务请求都会得到自己的,新实例化的服务类实例来处理请求,并且在返回答案后,该服务类实例将被释放。使用会话避免了这一点 - 处理会话第一次调用的服务类实例将在服务器端保持活动状态(并因此也占用服务器上的内存),并将处理同一会话中的所有后续请求。一般

WCF和Web服务但是最好是无国籍,这样的会议是有点在一个合适的SOA环境中一个古怪的建筑 - 这是最有可能的,为什么在WCF会议也远远不及ASP有用。 NET会话用于Web应用程序。

为了保持无状态并支持每个调用方法(首选最佳实践),如果您需要在调用之间存储数据,请将其存储在持久存储区(例如数据库)中,并在需要时从该存储区取回上。

5

如果您在IIS中托管服务,则可以启用ASP.Net兼容性模式。这将允许您使用ASP.Net会话状态,就像在Web应用程序中一样。

+0

如何启用ASP.Net兼容性模式? –