为什么在wsHttpBinding中每次都创建新会话ID
问题描述:
我正在使用以下配置来使我的服务有效,但对于每个请求wcf服务正在用新的会话ID响应我。为什么会这样,我需要让sessionful对于客户端,以便为每个请求应该有默认情况下,当通道被打开,你可以阅读更多关于它在这里发起会话相同的会话ID为什么在wsHttpBinding中每次都创建新会话ID
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="wsHttp">
<readerQuotas maxStringContentLength="10240" />
<reliableSession enabled="true" />
</binding>
</wsHttpBinding>
</bindings>
<services>
<service name="wcfservice.serviceclass" behaviorConfiguration="MyFileServiceBehavior">
<host>
<baseAddresses>
<add baseAddress="http://localhost:51/"/>
<add baseAddress="net.tcp://localhost:52/"/>
</baseAddresses>
</host>
<endpoint address="pqr" binding="wsHttpBinding" bindingConfiguration="wsHttp"
name="b" contract="wcfservice.Iservice" />
<endpoint address="pqr" binding="netTcpBinding"
name="c" contract="wcfservice.Iservice" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyFileServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
答
由于IsInitiating参数的默认值为true,因此每次调用都会启动一个新会话。了解更多关于在这里IsInitiating和IsInitiating
所以在您的业务合同
[OperationContract(
IsInitiating=false,
IsTerminating=false
)]
public void MethodOne()
{
return;
}
你有'SessionMode = SessionMode.Required'您ServiceContractAttribute的? – 2014-11-16 01:37:09
它是sessionmode.allowed – funsukvangdu 2014-11-16 14:16:40
将会话模式设置为必需,因此在发生错误时抛出异常,修复所有内容后,可以将其更改为允许。在您的问题中添加以下信息,调用您的服务的客户端示例代码,以及网络配置,任何物理负载平衡机制,防火墙(基于硬件和软件的模型)以及代理服务器。 – 2014-11-21 07:31:27