首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web Service >

WCF 通过RoutingService访问Service无法实现PerSession解决方案

2012-02-08 
WCF 通过RoutingService访问Service无法实现PerSession高手们帮帮忙。情况如下,Client请求Service,中间通过

WCF 通过RoutingService访问Service无法实现PerSession
高手们帮帮忙。情况如下,
Client请求Service,中间通过Routing Service,使用的Binding都是wsHttpBinding。

Service Contract:SessionMode.Required
Service Behavior:InstanceContextMode.PerSession

Routing Service Contract:IRequestReplyRouter。

一个Client的同一个Proxy多次调用同一个Service,虽然Service被配置成PerSession的,但处理一个Client的同一个Proxy多次调用的实例却不是同一个实例。

这是不是因为Routing Service会在与Client的一个会话内(Routing Service是PerSession的)通过多个内部Proxy来向Service发消息导致的?
若是,怎么解决?
若不是,原因是什么,怎么解决?

[解决办法]
我又看了看,我推测你的filter配置是通过Action一个个配的。每个Routing filter 应该对应一个Session。

所以如果你改为 MatchAll 的话,应该OK
[解决办法]
注意下面配置中,被注释的部分的filterType=Action,改用MatchAll 

XML code
<routing>   <filters>     <filter name="ServiceRouter_Filter1" filterType="MatchAll" filterData="http://tempuri.org/IService1"/>     <!--<filter name="ServiceRouter_Filter2" filterType="Action" filterData="http://tempuri.org/IService1/GetName"/>     <filter name="ServiceRouter_Filter3" filterType="Action" filterData="http://tempuri.org/IService1/SetName"/>-->   </filters>   <filterTables>     <filterTable name="ServiceRouterTable">       <add filterName="ServiceRouter_Filter1" endpointName="WcfService1"/>       <!--<add filterName="ServiceRouter_Filter2" endpointName="WcfService1"/>       <add filterName="ServiceRouter_Filter3" endpointName="WcfService1"/>-->     </filterTable>   </filterTables> </routing> 

热点排行