c# - InstanceContextMode = InstanceContextMode.PerSession 不工作
问题描述
我是 WCF 新手,我编写了一个使用 InstanceContextMode 的示例 WCF 服务。当我使用 PerSession 时,我的计数器值不会增加。为什么它不为每个服务调用使用相同的实例。下面是我的代码
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service1 : IService1
{
int count;
public int Add(int a, int b)
{
count++;
return a + b;
}
public int GetCount()
{
return count;
}
}
网络配置
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<!-- To avoid disclosing metadata information, set the values below to false before deployment -->
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
客户端.cs
DemoWCFService.Service1Client client = new DemoWCFService.Service1Client();
Console.WriteLine(""+ client.Add(10,20));
Console.WriteLine("" + client.Add(10, 20));
Console.WriteLine("" + client.Add(10, 20));
Console.WriteLine("" + client.GetCount());
Console.ReadKey();
请帮我解决一下这个。
解决方案
BasicHttpBinding 不支持 PerSession。最好使用支持会话的绑定,例如 WSHttpBinding、WS2007HttpBinding。
为确保您使用支持会话的绑定,您可以使用服务行为
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
如果您的绑定不支持会话,则会导致错误。
推荐阅读
- python - 当我从 C++ 调用 python 时无法导入库
- firefox - Firefox 中的“browser.storage.local”在浏览器重启时被清除
- python - 在不使用 sklearn 的情况下使用 SGD(LogLoss 随每个 epoch 增加)
- jmeter - 恒定吞吐量计时器无法正常工作
- java - 将新的 Json 属性添加到 Json 字符串响应
- amazon-web-services - Docker ECS 插件 AWS 上下文未设置 docker ecs setup
- java - android:没有获得关于标记点击的信息
- ubuntu - 如何在 Ubuntu 上更新我的 Visual Studio 代码
- postgresql - 在 TimescaleDB 中支持 3D 坐标
- python - Python:如何从另一个文件访问属性?从文件名导入类不起作用