Probleme WCF [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]



  • Ich möchte, das jeweils jeder Client immer das gleiche service objekt benutzt, so das nicht bei jedem aufrufe einer service operation ein neues service objekt angelegt wird? so bin ich auf die das "ServiceBehavior ... PerSession" siehe code gekommen..

    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 
        class DBService : MyLitMSASer.Service.IMSAccessServer,IDisposable   
        {
    
            private int iClassMember = 0;
            static int iSessionCreationcounteR = 0;
    
            //Service Konstruktor wird aufgerufen, sobald einer deren serviemethodne aufgerufen wird
    
            DBService()
            {
               iSessionCreationcounteR++;
               Console.WriteLine("Current Services " + iSessionCreationcounteR);
            }
            ~DBService()
            {
                iSessionCreationcounteR--;
                Console.WriteLine("Current Services " + iSessionCreationcounteR);
            }
            public void Dispose()
            {
                iSessionCreationcounteR--;
                Console.WriteLine("Current Services " + iSessionCreationcounteR);
            }
            public int GetMyValue()
            {
                return iClassMember;
            }
    
            public void SetMyValue(int iNewValue)
            {
                iClassMember = iNewValue;
            }
    .
    .
    .}
    

    dann hab ich mir gedacht ich setze die ServiceContract eigenschaft im itneface auf [ServiceContract(SessionMode = SessionMode.Required)] , dann kommt ein fehler, da dies das httpbinding nich unterstützt.. denke mal dran weil ich nicht verbindungsorientiert server/client kommuniziere??

    Zweite frage: Der Destruktor geht auch net, muss das über dispose machen.. ist doch quatsch oder???

    grüße


Log in to reply