2012-12-15 120 views
3

我使用Windows XP_SP_3和IIS 5(本地主機),建立網站與ASP.NET4,並使用此代碼:檢索COM類工廠CLSID組件{000209FF-0000-0000-C000-000000000046}

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

如果用VS2010運行網站,那就OK。但如果與IIS 5(本地主機)上運行,顯示此錯誤:

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.


我打開組件服務>計算機>右鍵點擊我的電腦>選擇屬性> COM Sucrity>啓動和激活... >編輯默認值>添加>高級>

我找不到用戶IIS(IIS_IUSRS)。所以選擇ASP.NET和確定並檢查本地啓動&遠程啓動&本地激活&遠程激活。

rest系統再次運行iis5站點。但再次顯示錯誤!

+0

你處於死路一條。 http://support.microsoft.com/kb/257757 –

回答

0

啓動Internet信息服務(IIS)。 用鼠標右鍵單擊您的應用程序的虛擬目錄,然後單擊屬性。 單擊目錄安全性選項卡。 在匿名訪問和身份驗證控制下,單擊編輯。 確保未選中「匿名訪問」複選框,並且「集成Windows身份驗證」是唯一選中的複選框。 配置ASP.NET使用Windows身份驗證與模擬,請使用以下配置

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

4
  1. 轉到控制面板 - >管理工具 - >組件 服務
  2. 展開樹通過點擊組件服務 - > 電腦 - >我的電腦 - > DCOM配置
  3. 搜索CLSId 00020906-0000-0000-C000-000000000046(用於word應用程序) 注意:如果搜索CLSId未找到,則通過「Windows Word應用程序」進行搜索。
  4. 通過選擇 00020906-0000-0000-C000-000000000046此CLSID現在右擊屬性
  5. 在化子性質區域中,單擊安全選項卡。
  6. 選擇全部自定義選項(啓動和激活 權限,訪問權限,配置權限)。
  7. 添加新名稱爲網絡服務,並允許所有權限爲 這個名稱。
  8. 轉到身份標籤在相同的屬性區域,選擇 選項作爲此用戶,然後添加用戶名(這是 管理員本機)和密碼。點擊應用,確定。
  9. 刷新組件服務並檢查您的應用程序是否正在工作 是否正常。
+0

它的工作,有趣,我想知道爲什麼從錯誤信息給出的CLSID不匹配此ID ... – jarvanJiang

+0

如果搜索CLSId沒有找到,然後搜索「 Windows Word應用程序「。搜索CLSId根據Windows版本而有所不同。 –

相關問題