Hi,
I have a GUI application that uses a remote serviced component in a
server COM+ application. The serviced component must let know the GUI
application instances when certain events happen. A transient subscription
could be the solution, but making a transient subscription implies
modification of the COM Admin Catalog with COMAdmin and the GUI application
does not have administrative privileges on the remote machine (neither on the local
machine).
GUI.exe processes live on machines A1, A2, ..., An; the application
server (and event class) lives on machine B. For developing purposes, B could be the
same machine as one of A1, ..., An when testing the server and the GUI on the same
machine.
The GUI clients make changes to the database through the application server.
When one of the clients makes such a change, the application server sends
the appropriate SQL statements to the database, and also notifies the other
GUI clients of the change. So the GUI clients can work on shared data at the same time.
I tried this, but it doesn't work:
In the same COM+ server application as the event class I implemented a serviced
component with 2 methods: Adivise and Unadvise. The Advise uses the COMAdmin to
transiently subscribe the IMsgSink parameter to the event class on the same machine.
This is possible because the COM+ server application has Admin rights on its machine.
The GUI creates a library activated COM+ component implementing the IMsgSink
interface, lets call it S. It also creates an instance of the intermediary serviced
component in the event class server application, and calls its Advise method passing
it S.
But UnauthorizedAccessException gets thrown. I'm in a workgroup environment, but I
don't think it matters.
(I posted this question on other groups, and that helped me a lot, but I still
can't solve it completely).
TIA,
Daniel Aioanei
You can read messages from the DOTNET archive, unsubscribe from DOTNET, or
subscribe to other DevelopMentor lists at http://discuss.develop.com.