-->

Retrieving the COM class factory for component wit

2020-04-08 01:38发布

问题:

i use Windows XP_SP_3 and IIS 5 (local host), build site with asp.net4 and use this code:

Application appClass = new Application();
Document wordDoc = appClass.Documents.Add(Server.MapPath("~") + @"Files\tmp.docx");
wordDoc.SaveAs(@"e:\hp\Files\" + TextBox1.Text + ".docx");
wordDoc.Close();

if run site with VS2010, its OK. but if run with IIS 5 (Local Host), show this error:

Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.UnauthorizedAccessException: Retrieving the COM class factory for component with CLSID {000209FF-0000-0000-C000-000000000046} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

ASP.NET is not authorized to access the requested resource. Consider granting access rights to the resource to the ASP.NET request identity. ASP.NET has a base process identity (typically {MACHINE}\ASPNET on IIS 5 or Network Service on IIS 6 and IIS 7, and the configured application pool identity on IIS 7.5) that is used if the application is not impersonating. If the application is impersonating via , the identity will be the anonymous user (typically IUSR_MACHINENAME) or the authenticated request user.

To grant ASP.NET access to a file, right-click the file in Explorer, choose "Properties" and select the Security tab. Click "Add" to add the appropriate user or group. Highlight the ASP.NET account, and check the boxes for the desired access.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.


I open Component Service > Computer > right click in My Computer > choose Properties > COM Sucrity > Launch and Activation... > Edit Default > Add > Advanced >

i not Find User IIS (IIS_IUSRS). so Choose ASP.NET and ok and Check Local Launch & Remote Launch & Local Activation & Remote Activation.

rest System and run site with iis5 again. but show error previous again!

回答1:

  1. Goto Control panel -> Administrative Tools -> Component Services
  2. Expand Tree by clicking on Component Services -> Computers -> My Computer -> DCOM Config
  3. Search CLSId 00020906-0000-0000-C000-000000000046 (which is for word application) Note: If Search CLSId not finds then search by "Windows Word Application".
  4. By selecting 00020906-0000-0000-C000-000000000046 this CLSId now right click on Properties
  5. In the Propeties area, click on Security TAB.
  6. Select Customize option from all (Launch and Activations Permissions, Access Pemissions, Configuration Permissions).
  7. Add new name as NETWORK SERVICE in all, and Allow all permissions for this name.
  8. Go to Identity TAB in the same properties area, select option as a This user and then add username (which is administrator of this machine) and password. Click on Apply, Ok.
  9. Refresh Component Services and check your application is working fine or not.


回答2:

Start Internet Information Services (IIS). Right-click your application's virtual directory, and then click Properties. Click the Directory Security tab. Under Anonymous access and authentication control, click Edit. Make sure the Anonymous access check box is not selected and that Integrated Windows authentication is the only selected check box. Configure ASP.NET to use Windows authentication with impersonation, use the following configuration

...
<authentication mode="Windows"/>
<identity impersonate="true"/>
...