2015-10-14 32 views
1

我上傳PPT文件,我將ppt silde轉換爲圖像。當我在visual studio中運行時,它工作正常,但是當我將代碼發佈到IIS服務器時,以下錯誤無法上傳Ppt並在IIS服務器中讀取

Retrieving the COM class factory for component with CLSID {91493441-5A91-11CF-8700-00AA0060263B} failed due to the following error: 80070005 Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED)).

代碼的這篇:

Microsoft.Office.Interop.PowerPoint.Application PowerPoint_App = new Microsoft.Office.Interop.PowerPoint.Application(); 
Microsoft.Office.Interop.PowerPoint.Presentations multi_presentations = PowerPoint_App.Presentations; 
Microsoft.Office.Interop.PowerPoint.Presentation presentation = multi_presentations.Open(filePath, MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); 
+1

可能出現[需要什麼服務器端才能運行Office Interops?](http://stackoverflow.com/questions/26224066/what -is-required-server-side-to-run-office-interops) –

+0

https://support.microsoft.com/en-us/kb/257757停止浪費時間在那和下面w微軟對Office服務器端自動化的建議。 –

+0

由於Office可能表現出不穩定的行爲,因此Microsoft目前不推薦並不支持來自任何無人蔘與的非交互式客戶端應用程序或組件(包括ASP,ASP.NET,DCOM和NT服務)的Microsoft Office應用程序的自動化, /或在此環境中運行Office時發生死鎖。 https://support.microsoft.com/en-us/kb/257757 – gsharp

回答

3

對於Windows Server 2012 R2(Azure)上的相同問題,Web上的所有答案都無效。以下是在所有服務器上運行的縮小解決方案。

  1. 安裝Office和激活該產品每個服務器
  2. 創建了下的文件夾 '桌面' 上:\ WINDOWS \ Syswow64資料\ CONFIG \ systemprofile \桌面(64位操作系統) enter image description here
  3. 在IIS改變從「ApplicationPoolIdentity」到「LocalSystem」的ApplicationPool標識。 enter image description here

就是這樣,我能夠將幻燈片轉換爲圖像。

源代碼

如果你有興趣在代碼中,我用:

Application pptApplication = new Application(); 
Microsoft.Office.Interop.PowerPoint.Presentation pptPresentation = pptApplication.Presentations.Open2007(Server.MapPath("~/tempslides/pptfilename.pptx"), MsoTriState.msoFalse, MsoTriState.msoFalse, MsoTriState.msoFalse); 
List<string> files = new List<string>(); 
for (int i = 1; i <= pptPresentation.Slides.Count; i++) 
{ 
    pptPresentation.SaveCopyAs(serverPath + randomId, PpSaveAsFileType.ppSaveAsPNG, MsoTriState.msoTrue); 
    files.Add(Server.MapPath("~/tempslides") + "/slide" + i + ".PNG"); 
} 
pptPresentation.Close(); 

要運行上面的代碼,你需要在你的項目中添加引用互操作庫。 enter image description here

希望這可以幫助您節省您的時間。

2

配置DCOM

  1. 轉到開始 - >運行。

  2. 類型DCOMCNFG。 (這將加載「組件服務」)

  3. 進入組件服務 - >計算機 - >我的電腦 - > DCOM配置 - >微軟辦公室電源點

  4. 右鍵單擊並選擇屬性。

  5. 選擇安全選項卡。

啓動和激活權限

  1. 選擇自定義,然後按下編輯按鈕。
  2. 按添加按鈕選擇「網絡服務」帳戶。
  3. 授予本地啓動和本地激活的權限 單擊確定按鈕,然後測試您的應用程序,它現在應該可以正常工作。
+0

我已經完成...但獲取相同的錯誤.... –

+0

去註冊並查找** {91493441-5A91-11CF-8700-00AA0060263B } **和檢查用戶是**網絡服務**或其他用戶 –

+0

它位於本地計算機 –

0

您應該授予「此用戶」 的權限,然後在COM +設置中獲取登錄憑據。

+0

在哪裏給予權限??? COM設置或其他地方? –

0

我已按照以下操作解決問題。

1)進入控制面板 - >管理工具 - >組件服務 - >計算機 - >我的電腦 - > DCOM配置 - > Microsoft Office Powerpoint右鍵單擊並選擇屬性。 選擇安全選項卡。 併爲啓動和激活權限,訪問權限和配置權限的所有三個訪問提供對IIS_IUSR的完全訪問權限。

2)將應用程序池標識爲 「本地系統」

3)提供,其中Microsoft.Office.Interop的Dll部署

的文件夾,IIS_IUSR完全訪問,例如:C:\ Program Files文件( x86)\ Microsoft Visual Studio 12.0 \用於Office \ PIA \ Office15的Visual Studio工具