自我托管的WCF服务中的会话

问题描述:

提示请如何在自己托管的WCF中使用会话?我需要实现像会话一样的ASP.NET(客户端标识和可能的数据共享)。在WCF中是否有任何本地方式这样做,或者我必须手动实现此行为(为每个请求发送一些唯一值并将它们存储在某个sessionID存储中)?提前致谢。 P.S.对不起,英语不好。自我托管的WCF服务中的会话

您可以在自托管的WCF中创建会话,但您需要使用具有会话支持的绑定。 WSHttpBinding,NetTcpBinding和NetNamedPipeBindings都支持会话,以及自定义绑定中绑定元素的其他组合。例如,您将无法在BasicHttpBinding中使用会话,因为您没有可以利用的基础ASP.NET会话对象。

+0

感谢您对卡洛斯的回复,但我不确定这正是我需要的。正如我从各种msdn *文章中可以理解的那样,WCF会话是在一次代理对象调用期间工作的,所以如果为每次调用创建代理对象,我将失去一个会话。此外,我可能需要在两个或更多端点(即代理)之间共享会话。所以,我需要一些唯一的ID来标识每个呼叫的客户端并不重要使用哪个代理对象。 – Artyom 2011-05-31 07:48:33

+0

我明白了,所以你需要一个产生多个客户端的会话。在这种情况下,它仍然是可行的,但你必须亲自管理会话。在服务器端,您可以使用一些对象,如MemoryCache(http://msdn.microsoft.com/en-us/library/system.runtime.caching.memorycache.aspx)来存储会话信息,也可以使用一些检查器(IDispatchMessageInspector)为所有外发消息(取决于调用所属的“会话”)编写唯一标识,并将会话映射到传入请求,该请求应将该标识作为SOAP或HTTP标头。 – carlosfigueira 2011-05-31 15:35:41

+0

非常感谢。我会尝试这种方法。 – Artyom 2011-06-01 06:11:29