簡體   English   中英

無法上傳Ppt並在IIS服務器中閱讀

[英]Not Able To upload Ppt and read in IIS Server

我正在將PPT文件轉換為圖像的PPT文件。當我在Visual Studio中運行時,它可以正常工作,但是當我將代碼發布到IIS服務器時,出現了以下錯誤

由於以下錯誤,檢索具有CLSID {91493441-5A91-11CF-8700-00AA0060263B}的組件的COM類工廠失敗:80070005訪問被拒絕。 (來自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);

對於Windows Server 2012 R2(Azure)上的同一問題,網絡上的所有答案都沒有對我有用。 這是適用於所有服務器的縮小范圍的解決方案。

  1. 在每台服務器上安裝Office並激活產品
  2. 在C:\\ Windows \\ SysWOW64 \\ config \\ systemprofile \\ Desktop(64位OS)上創建文件夾“ Desktop” 在此處輸入圖片說明
  3. 在IIS中,將ApplicationPool標識從“ ApplicationPoolIdentity”更改為“ LocalSystem”。 在此處輸入圖片說明

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

源代碼

如果您對我使用的代碼感興趣:

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();

要運行以上代碼,您需要在項目中添加對interop lib的引用。 在此處輸入圖片說明

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

配置DCOM

  1. 轉到開始->運行。

  2. 鍵入DCOMCNFG。 (這將加載“組件服務”)

  3. 轉到組件服務->計算機->我的電腦-> DCOM配置-> Microsoft Office Power point

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

  5. 選擇安全選項卡。

啟動和激活權限中

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

您應該授予“此用戶”權限,然后在COM +設置中獲取登錄憑據。

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

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

2)將應用程序池標識設置為“ LocalSystem”

3)為Microsoft.Office.Interop Dll部署的文件夾提供對IIS_IUSR的完全訪問權限

例如:C:\\ Program Files(x86)\\ Microsoft Visual Studio 12.0 \\ Visual Studio Tools for Office \\ PIA \\ Office15

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM