Friday, March 10, 2006

8 hours to figure out a DCOM call.

I spent quite a lot of time in last two days try to figure out a DCOM calls from the Windows 2003 machine to the Windows 2000 machine.

I had written a component to generate the sketch image for the property card. The actual component is sitting on windows 2000 server, and the proxy is exported and installed on windows 2000 server (the web server) too.

WebServer running the COM+ proxy(windows 2000) - > Component Server (also Database Server) (windows 2003)

Since the webserver is not very stable, and we exported the websites to the new 2003 server.

Suddently, the asp page gave out the following error.

Server object error 'ASP 0178 : 80070005'
Server.CreateObject Access Error

It is not a rare error, and googling will find tons of posts on this issue. Most of posts are misleading until i found this
link

Basically, when the anonymous user (IUSR_WEBSERVERNAME) makes a request on 2000, the identity used is NTAUTHORITY\IUSR_WEBSERVERNAME . On the 2003 server, the indentity used is WEBSERVERNAME\IUSR_WEBSERVERNAME, which is rejected by the component server.

The link suggested a couple of workaround, but I don't want to change anything on the new webserver, so I just added IUSR_WEBSERVERNAME to the Component Server, and it worked very beatifully.

Categories

No comments: