C# WCF关闭连接/释放资源

C# WCF关闭连接/释放资源,c#,asp.net,wcf,service,C#,Asp.net,Wcf,Service,我最近将我的ASMX服务转换为WCF以利用会话 我已经阅读了一些有关MSDN的会话教程,但仍然不确定我的代码中是否有良好的设置。到目前为止,它是有效的,但我不确定为什么 我得到 [ServiceContract (SessionMode = SessionMode.Required, Namespace = "http://smartshopservice.org")] 那我有 [ServiceBehavior(InstanceContextMode = InstanceCo

我最近将我的ASMX服务转换为WCF以利用会话

我已经阅读了一些有关MSDN的会话教程,但仍然不确定我的代码中是否有良好的设置。到目前为止,它是有效的,但我不确定为什么

我得到

[ServiceContract
    (SessionMode = SessionMode.Required,
     Namespace = "http://smartshopservice.org")]
那我有

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class SmartShopService : SmartShopInterface
{
    private static Shopper sh = new Shopper();
    private List<aaa> data = new List<aaa>();
它似乎可以工作,我在ASP.NET页面的onbody=“”中调用了如下函数:

static GarfieldService.SmartShopInterfaceClient service 
    = new GarfieldService.SmartShopInterfaceClient();
[WebMethod]
public static bool Connect() {
    try {
        if (service.State 
            == System.ServiceModel.CommunicationState.Closed) {
            service.Open();
            return true;
        }
        else if (service.State 
            == System.ServiceModel.CommunicationState.Created) {
            service.Open();
            return true;
        }
    }
    catch {}
    return false;
}

因此我可以连接,但如何断开或关闭会话?

关于:全局,是的,在服务上使用静态将充当全局,并且由于您使用的是PerSession,“aaa”变量将是每个会话

Re:终止,尝试创建“终止”操作并设置属性参数=true

另外,我认为WebGet属性与wsDualHttpBinding无关