Always read the "breaking changes" when upgrading your vs.net.
I didn't bother reading about them back then, I browsed it, but didn't make a notice of it...
After a couple of very frustrating debugging hours, I had to write an embarrassing email to Mike Woodring on a Saturday morning(was snooping around in his samples). Zoom 5 min. laters an answer came back "use typeFilterLevel='Full' in your config file" and life went on. Amazing these guys, "Ask, and it shall be given you."
I was trying to build a windows service which asynchronously notifies all clients when a client has modified a record. When the client starts, it registers it self e.i it registers a delegate/callback with the remote service. When ever the client touches a specific record, it invokes the delegate. The server now notifies all (Delegate.GetInvocationList) the clients who registered this delegate. works like a charme. The typeFilterLevel specifies the level of automatic deserialization, this has to be set to full if you are trying to pass ObjRef as parameters, like I did. As usual it's all about security and with the level set to full and depending on the data, you should encrypt the data.
I find the .net remoting architecture soooo great. I just had time left to stuff my own messagesink into the list. whaa you have all the information in the world from here on. The IMethodMessage gives you a chance to investigate all sorts of cool things, like the Uri, assemblyname, type info, methodname you name it. You also has access to the LogicalCallContext, well with this you can actually mbv your object, pretty cool if you are building some special infrastructure for your app. After this, you simply can't ignore AOP anymore.
So my client died after 5.min, my excuse to play with ILease, ISponser and ITrackingHandler too.
uh sigh, I wish I could play with .net on a daily basis.
"Don't be afraid to ask dumb questions. Better a dumb question than a dumb mistake."
- Unknown