无法上传 Ppt 并在 IIS 服务器中读取

Not Able To upload Ppt and read in IIS Server

我正在上传 PPT 文件,我正在将 ppt silde 转换为 images.When 我是 运行 在 visual studio 它工作正常但是当我将代码发布到 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);

配置 DCOM

  1. 转到开始 -> 运行。

  2. 键入 DCOMCNFG。 (这将加载 "Component Services")

  3. 转到组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> Microsoft Office Power point

  4. 右键单击 select 属性。

  5. Select 安全选项卡。

启动和激活权限

  1. select 自定义并按“编辑”按钮。
  2. 按添加按钮 select "Network Service" 帐户。
  3. 授予本地启动和本地激活权限 单击确定按钮,然后测试您的应用程序,它现在应该可以正常工作了。

您应该授予 "This User" 权限 然后在 COM+ 设置中获取登录凭据。

None 网络上的答案对我在 Windows Server 2012 R2 (Azure) 上的相同问题有用。这是适用于所有服务器的缩小范围的解决方案。

  1. 已在每台服务器上安装 Office 并激活产品
  2. 在 C:\Windows\SysWOW64\config\systemprofile\Desktop 创建了文件夹 'Desktop'(64 位 OS)
  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();

对于运行以上代码,您需要在您的项目中添加对互操作库的引用。

希望这可以帮助您节省时间。

我已按照以下操作解决问题。

1) 转到控制面板 -> 管理工具 -> 组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> Microsoft Office Powerpoint 右键单击​​和 select 属性。 Select 安全选项卡。 并为启动和激活权限、访问权限和配置权限的所有三个访问权限提供了对 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