Just nu i M3-nätverket
Gå till innehåll

C#: Servern "tappar" förbindelsen med CAO-objekt e


Jonas Versén

Rekommendera Poster

Jonas Versén

Hej hej!

 

Jag har ett ganska komplicerat och troligen ovanligt fel. Jag har sökt igenom hela Internet, fram och tillbaka, från vänster till höger utan att hitta något. Jag skall göra mitt bästa för att förklara situationen här, kanske är det ett litet skräpfel eller en bugg i Frameworket?

 

Jag har en server applikation som lyssnar på http-kanalen port 13101 och exposar ett antal typer, den intressanta här är "OnlineUser" som är ett Client Activated Object.

 

OnlineUser ligger i ett eget projekt, Library som både server och klient har tillgång till.

När en klient loggar in så skapas ett CAO-object av typen OnlineUser på servern som representerar användaren.

 

I serverns app.config fil har jag specificerat att leasetiden skall vara 45 sekunder från början och 40 sekunder för varje renew därefter. I klienten har jag en trådad funktion som kallar en metod i OnlineUser var 20e sekund, en sorts ping. Om klienten tappar uppkopplingen så tar en sponsor hand om att dispose'a OnlineUser. Lease tid, "ping" och sponsor fungerar fint, det har jag testat på flertalet sätt.

 

Problemet är när jag har 2 klienter som skall prata med varandra via servern... när den ena klientens CAO-objekt skall invokera en metod i CAO-objekt nr 2 (det är en IM-applikation, och meddelanden skickas genom informationsutbyte mellan användarnas CAO-objekt) så får jag efter ca 7 minuter följande felmeddelande:

 

Object </5e8a3e69_c127_42b4_a1a5_4085320a4e1a/1.rem> has been disconnected or does not exist at the server

 

Innan ca 7 minuter fungerar applikationen fint. Enligt alla uppgifter jag hittat är detta pga att CAO-objektet tagits bort efter att leasetiden gått ut, jag vet dock att det inte har gjorts både pga av att "ping" funktionen i klienten varit aktiv och att sponsorn inte har kallats.

 

Mina funderingar har kretsat runt ifall server applikationen räknas som ett Server Activated Object - Singleton, och att det kanske startas om efter att ingen har invokerat någon metod i det efter ett tag. Dock rimmar tiden 7 minuter illa med default tiden 5 minuter plus att jag inte lyckats komma närmare lösningen med override InitializeLifeTimeServices() i servern.

 

Jag vet att det är en stort problem o sätta sig in i, men alla tankar är välkomna!

 

/Jonas

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...