Avatar billede md_craig Nybegynder
22. maj 2005 - 00:33 Der er 9 kommentarer og
1 løsning

Problemer med Remoting og Events

Jeg sider lige og roder med noget .NET Remoting og nogle Events... Indtil videre er det bare meget simpelt og basalt... men nu skal jeg have det til at virke først...

Jeg har fint fået en klient til at kalde en metode på en server osv... men har et problem med at sende Events retur...

Jeg har til at starte med lavet det så simpelt at Klienten bare kalder en metode der så Raiser et event...

Men når jeg sætter min EventHandler på min Client (ComMethEventCallback) så sker der ting og sager med Serialiseringen...

Åbenbart noget med sikkerheds niveauet...

________________________________________________________________
Unhandled Exception: System.Security.SecurityException: Type System.DelegateSeri
alizationHolder and the types derived from it (such as System.DelegateSerializat
ionHolder) are not permitted to be deserialized at this security level.
________________________________________________________________

Tja... Nogen der lige ved hvad jeg skal gøre ved det... for jeg ved 100% ikke...
Avatar billede spif2001 Nybegynder
22. maj 2005 - 10:05 #1
Ikke så stiv i det - men har du administrator rettigheder på maskinen? Er der en firewall slået til, som skal åbnes lidt?

Det ser ud til at dine kald bliver fanget, da du ikke har rettigheder til at sende/modtage.
Avatar billede burningice Nybegynder
22. maj 2005 - 10:11 #2
.Net remoting og Events er en farlig coctail og noget langhåret at få til at virke.

http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=6983
Avatar billede md_craig Nybegynder
22. maj 2005 - 13:03 #3
spif2001 :>>

Ja jeg har Administrator retigheder, naturligvis...
Jeg har ingen Firewall, og det kører PT alligevel Localhost...

burningice :>>

Jeg har søgt nettet tyndt of er stødt på den der... problemet er bare at jeg sider og skumler over den... for det har jeg fået til at virke... men der er bare for meget lige at sætte sig ind i...

Desuden bruger den jeg har kigget på nogle assembly's fra et eller andet sted...
snakker om:

using Belikov.GenuineChannels.BroadcastEngine;
using Belikov.GenuineChannels.DotNetRemotingLayer;

Og det er måske også nogle lige lovlige store projekter at kigge i når man først lige er begyndt at kigge på Events over Remoting, da det mere omhandler det "bedre" måde at gøre det på og måske henvender sig til folk der allerede ved noget om remoting...

Eksemplet jeg ar prøvet at følge er fra Developmentor:
http://www.develop.com/us/technology/resourcedetail.aspx?id=b49ad85d-43d8-41ad-8da9-86c046aa7453

Eksemplet selv mælder samme fejl...
Avatar billede md_craig Nybegynder
22. maj 2005 - 14:14 #4
ser ud til at jeg måske endelig har fundet noget om lige præsis mit problem...

http://www.thinktecture.com/Resources/RemotingFAQ/Changes2003.html
Avatar billede md_craig Nybegynder
22. maj 2005 - 14:45 #5
Ja så lang så godt... jeg kom af med den fejl jeg oplevede før... og ryger nu ind i en ny :P


Unhandled Exception: System.Runtime.Remoting.RemotingException: System.ArgumentN
ullException: No message was deserialized prior to calling the DispatchChannelSi
nk.
Parameter name: requestMsg
  at System.Runtime.Remoting.Channels.DispatchChannelSink.ProcessMessage(IServe
rChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeade
rs, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHead
ers, Stream& responseStream)
  at System.Runtime.Remoting.Channels.BinaryServerFormatterSink.ProcessMessage(
IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders reques
tHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& respon
seHeaders, Stream& responseStream)
  at System.Runtime.Remoting.Channels.Http.HttpServerTransportSink.ServiceReque
st(Object state)
  at System.Runtime.Remoting.Channels.SocketHandler.ProcessRequestNow()


Server stack trace:


Exception rethrown at [0]:
  at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage req
Msg, IMessage retMsg)
  at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
ta, Int32 type)
  at Common.IComMeth.add_MyEvent(MyEventFireMan value)
  at Clent.Client.Main(String[] args) in j:\visual studio\c# projects\remevent\
clent\client.cs:line 35
Press any key to continue
Avatar billede md_craig Nybegynder
22. maj 2005 - 15:18 #6
atter en gang kom han et skridt videre... ved at benytte Soap kan jeg da nu komme der til hvor den siger den ikke kan Raise mit Event...

Fejl:
_____________________________________________________________________________________
Running
Im going to fire an Event now
The Eventfirema is Lazzy agian

This remoting proxy has no channel sink which means either the server has no reg
istered server channels that are listening, or this application has no suitable
client channel to talk to the server.
  at System.Runtime.Remoting.Proxies.RemotingProxy.InternalInvoke(IMethodCallMe
ssage reqMcmMsg, Boolean useDispatchMessage, Int32 callType)
  at System.Runtime.Remoting.Proxies.RemotingProxy.Invoke(IMessage reqMsg)
  at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgDa
ta, Int32 type)
  at Common.MyEventShema.MyEvent(String str) in j:\visual studio\c# projects\re
mevent\common\icommeth.cs:line 24
  at Server.ComMeth.fireEvent() in j:\visual studio\c# projects\remevent\server
\server.cs:line 26
^A
Avatar billede md_craig Nybegynder
22. maj 2005 - 16:48 #7
Ja så lang så godt... Nu gider jeg ikke lige Poste alt her der gav løsningen..
Skulle folk have problemer så må de lige spørge... så kan det være jeg kan  være behjælpelig... nu hvor jeg løste det selv... :D

E[a]it-links.dk
Avatar billede md_craig Nybegynder
22. maj 2005 - 21:06 #8
Nu glæmte jeg lige at ligge et svar :P

Enyways hvis nogle skulle misforstå overstående, så var det hvis folk sider med samme problemer og det lige støder på dette spm og mener, hey det er da lige præsis det samme jeg har problemer med... så skal de være velkomne til at skrive til den mail jeg lige smed... ;)
Avatar billede prec Nybegynder
26. maj 2005 - 10:32 #9
Af ren interesse, kunne du få dette til at virke ordenligt uden at have en slags event gateway, dvs et object delt af både client og server som modtager beskeder fra serveren og sender videre til klienten?
Avatar billede md_craig Nybegynder
26. maj 2005 - 16:44 #10
I event tilfældet overgår du lidt den situation da du lader andre ting sørge for den slags for dig... jeg kan dog sige at jeg er gået væk fra Events igen... og vil IKKE råde folk til at bruge det...

Lige nu har jeg stadig et problem hængende, og det er at hvis en klient ikke er aktiv i længere tid, så falder den væk under serveren... hvilket ikke er så godt...

Men du kan lidt gøre det op på flere måder... jo du kan have et fælles objekt... som begge kender... virker dog lidt underligt i mine øjene...

Personligt har jeg et objekt til modtagelse og et til levering...
dette være på måde server og client...

Så vidt muligt skal der benyttes SingleCall... netop for at undgå den problematik med at server eller klient pluselig forsvinder under dig... (jo der er andre måde at sikre sig det på... men efter hvad jeg har læst og kan forstå er de ikke at foretrække!)...

Jeg har det som øverst demonstret her... mens jeg stræber efter den nederste løsning...
http://www.myoldclass.net/misc/com.pdf

Meningen er at ComObjekterne skal være uafhængige i forhold til resten...
Dvs. at det er lige meget hvordan de Opstår og Nedlægges...
På den måde vil serveren/klienten ikke kunne falde væk under en...

Mens ved den løsning jeg har (Øverst) vil Klienten kunne falde væk under serveren...

Ved ikke om det gav nogen mening...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester