Hi Rob,
Welcome in the World of COM+:)
First, exporting the proxy from the server and installing it on the
client is the right way.
If you try this there can be some more problems that maybe blocking points:
1) If the the Client is W2000 and the Server is Windows XP you have to
export the proxy with COM+ 1.0 compatibility. If it does not install
then there still can be infrastructure issues that have to be solved.
It is very easy to write Code that needs COM+1.5 and does not get
magically *repaired* when being exported that way.
2) Do you have Windows Messaging installed? (Client!)
3) Do you have Windows Messaging using Active Directory installed?(Client!)
4) Do you want to identify the caller of the queued components at server
side? This is only possible with Active Directory Support and the client
PC must be member of the Server Domain.
5) If you use unauthorised calls(Windows Messaging without Active
Directory) to queued components the caller identification always gets
lost! (Other then non queued components calls)
6) If deploy works you have to make sure that the server side component
runs to see your calls processed.
7) Security is like a octopus in COM+. A lot of arms and every single
one connected to each other. Try to check if the hostname of the server
is at the client resolveable via dns. If not add it to drivers/etc/hosts
8) Try to check if a working example application (queued component)
(e.g. of one of the com+ books) can be made to run on your machines.
That way you make sure that your infrastructure is intact. The
knowledgebase has examples of what can be broken in a windows messaging
installation.
Good luck,
Carsten
[quoted text, click to view] Rob Garfoot wrote:
> I've got a major problem at the moment getting this to work so hopefully
> someone here can help me out.
>
> We've 3 assemblies in .NET. One client, one server and one interface
> definition. The client and server assemblies both reference the interface
> assembly. The server is an object deriving from ServicedComponent and
> implementing the interface as a queued interface.
>
> We install the server in COM+ using regsvcs and then run up the client
> application and everything works fine. However as soon as we try and run the
> client on a separate machine from the server we have some big issues.
>
> We are using the moniker queue:ComputerName=<computername>/new:<classname>
> with the <> bits replaced with actual names. We then get a message on the
> client saying that the class name could not be found. This is most likely
> because the client is trying to instantiate the object in the local COM+
> catalog before processing the queue directive. Since the server is not
> installed on this machine it fails.
>
> To get around this problem I'm assuming we need to export a proxy from the
> server COM+ catalog and install the proxy on the client machine or something.
> We've tried this and the MSI we get wont install on the client machine. We
> just get a generic error that doesn't really tell you anything.
>
> I've been unable to find anything that tell you how to manage this with .NET
> components. I've found some information referring to basic COM/COM+ and some
> information for .NET that doesn't cover remote queuing but nothing that
> describes this issue.
>
> Can anyone enlighten me as to what the normal process is to try and get this
> working. Obviously we don't want to install the server component on the
> client and thought we'd removed the need for that by putting the interfaces
> in a separate DLL. We need to get this issue resolved in the next couple of
> days otherwise we'll have to look at rewriting all of our code as we have a
> deadline rapidly approaching that can't move.
>
> Rob