我正在上传PPT文件,我正在将ppt silde转换成图像。当我在visual studio中运行时工作正常但是当我将代码发布到IIS服务器时我得到以下错误
使用CLSID检索组件的COM类工厂 {91493441-5A91-11CF-8700-00AA0060263B}由于以下原因而失败 错误:80070005访问被拒绝。 (HRESULT的例外情况:0x80070005 (E_ACCESSDENIED))。
代码:
<%= bootstrap_form_for Invitation.new do |f| %>
<br>
<ul>
<%= f.hidden_field :attended_event_id, :value => @event_selected.id %>
<% users.each do |user| %>
<li>
<%= check_box_tag 'invitation[attendee_id][]', user.id %>
<%= h user.name %>
</li>
<% end %>
</ul>
<br>
<%= f.submit "Invite Selected Users" %>
<% end %>
def create
@invitations = invite_params[:attendee_id].map do |attendee_id|
Invitation.new(
attended_event_id: invite_params[:attended_event_id],
attendee_id: attendee_id
)
end
if @invitations.any?(&:invalid?)
flash.now[:error] = "Failure!"
redirect_to root_path
else
@invitations.each(&:save!)
flash.now[:success] = "Invited!"
redirect_to root_path
end
end
private
def invite_params
params.require(:invitation).permit(:attended_event_id, {:attendee_id => []})
end
答案 0 :(得分:3)
对于我在Windows Server 2012 R2(Azure)上的同一问题,网络上没有任何答案。这是缩小的解决方案,适用于所有服务器。
就是这样,我能够将幻灯片转换成图像。
源代码
如果您对我使用的代码感兴趣:
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的引用。
希望这可以帮助您节省时间。
答案 1 :(得分:2)
配置DCOM
转到开始 - &gt;运行
键入DCOMCNFG。 (这将加载“组件服务”)
转到组件服务 - &gt;计算机 - &gt;我的电脑 - &gt; DCOM配置 - &GT; Microsoft Office Power point
右键单击并选择“属性”。
选择“安全”标签。
在启动和激活权限
中答案 2 :(得分:0)
您应该授予“此用户”权限 然后在COM +设置中获取登录凭据。
答案 3 :(得分:0)
我已按照以下操作解决问题。
1)转到控制面板 - &gt;管理工具 - &gt;组件服务 - &gt;计算机 - &gt;我的电脑 - &gt; DCOM配置 - &gt; Microsoft Office Power point右键单击并选择“属性”。 选择“安全”选项卡。 并为启动和激活权限,访问权限和配置权限提供了对IIS_IUSR的完全访问权限。
2)将应用程序池标识设置为&#34; LocalSystem&#34;
3)为部署了Microsoft.Office.Interop Dll的文件夹提供对IIS_IUSR的完全访问权限
例如:C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 \ Office \ PIA \ Office15的Visual Studio工具