Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Using COM Objects from ASP.NET

DZone's Guide to

Using COM Objects from ASP.NET

·
Free Resource
I got the following question yesterday:

Hi, I created a web application in which I am generating a ms-word document using Microsoft.Office.Interop.Word dll. The application is running fine in the visual studio but when I tried to run on IIS 5.0 through virtual directory then its giving the following error – Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005. In my application I have taken reference of Microsoft Word 12.0 Object Library, but its coming as Microsoft.Office.Interop.Word dll, this interop dll is just a wrapper of the actual word COM dll. But I have to register the actual word COM dll. so my problem is to find – 1) The path of the original word dll(COM) 2) How to register this dll, either using regsvr32 or to register on IIS. OR there will be any other solution. I have gone through many forums but did’nt get any solution. If you have any idea/suggestion on COM Word components please revert me back.

First, you really shouldn’t be using COM from ASP.NET.  That’s not to say that you can’t, but there are so many issues when you do this that you are really better off avoiding it if at all possible. Find a third party dll that is written in .NET.

Second, I’d be willing to bet that when you developed this application, you developed it as a file based project instead of developing it under IIS.

image

You always want to develop your web applications under IIS so that you run into these types of problems while you are developing instead of after the fact.  If your operating system doesn’t have IIS available, upgrade to one that does!

The error message, is telling you that you don’t have permissions to run the COM object.  This was easily found using Google to search for the error code along with some possible solutions.

The problem is that ASP.NET is not running as a user that has access to the COM object.  In fact, ASP.NET can’t run any code outside of the virtual directory you created the application in by design.  You COULD grant the ASPNET_WP user access to the COM objects, but I would recommend against that for security reasons.

What I would recommend that you do instead is run Microsoft Word under COM+ as a specific user with rights to Word that can be accessed via COM+ remoting (even though it is all on the same computer) so that ASP.NET security isn’t compromised.

I did something similar when I wrote VSS.NET so that my web service could access the VSS COM DLL.  You can see a description of how I did this by checking out this article.  (See the section labeled, “COM+ vs ASPNET user”)

All of this assumes, of course, that you installed MS-Word on the IIS server and installed it so that everyone could run it so that the registry entries are visible to any user who is logged in on that computer.

Topics:

Published at DZone with permission of Dave Bush, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

The best of DZone straight to your inbox.

SEE AN EXAMPLE
Please provide a valid email address.

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.
Subscribe

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}