【问题标题】:Why ASP.NET Web App works well when run the .exe from cmd but throws an error from IIS?为什么从 cmd 运行 .exe 时 ASP.NET Web App 运行良好但从 IIS 抛出错误?
【发布时间】:2021-10-09 00:09:14
【问题描述】:

这是关于 ASP.NET Web App 做简单的 Visio Office 自动化 - 将文件从 vsdx 转换为 svg。

我已经知道不建议在 Microsoft 文档 MS 的服务器端执行此操作。 但是,只有 Visio 能正确转换我的复杂图表Aspose 也转换错误)。

该应用程序在我的 PC(Windows 10 企业版)上运行良好,从 VS 以 IISExpress/Project/Executable/IIS 启动,甚至从 IIS 本身启动。 但是,在服务器(Windows Server 2019 Standard)上,只有当我从 cmd 将其作为 exe 运行但从 IIS 中的 IIS 抛出错误(消息:“发生异常”。没有更多有用的信息)时,该应用才能正常运行以下几点:

using Visio = Microsoft.Office.Interop.Visio;
Visio.InvisibleApp visioInvisibleApp = null;
...
Visio.Document doc = visioInvisibleApp.Documents.Open(vsdxSourcePath);

可能有什么不同,我怎样才能让它在 IIS 上运行?

请注意,它与关于此问题的所有其他问题略有不同,因为它已经在我的 PC 上在 IIS 上运行良好,但在服务器上运行不佳。

【问题讨论】:

  • 这能回答你的问题吗? Open doc file is null IIS 7.5
  • @GSerg 谢谢,但那些没有回答我的主要问题。
  • 最可能的区别是运行代码的用户帐户(和相关权限)。 IIS 对使用什么用户帐户有相当复杂的规则,并且服务器上的默认设置与工作站不同。这也可能是在服务器和工作站上确定或解析vsdxSourcePath 的方式。
  • @LexLi,我明白你在说什么,但它在一台机器上工作的事实仍然证明它也可以在另一台机器上运行。此外,就我而言,没有其他选择,因为只有 Visio 可以正确转换我的图表。
  • 我不确定您是否注意到 Joel Coehoorn 的评论。但他指出的可能性很大。使用 cmd 时,应用程序以当前登录用户的权限执行。但是 IIS 是“应用程序池标识”,权限非常低。那你改过应用池的身份了吗?

标签: iis asp.net-web-api cmd visio office-automation


【解决方案1】:

终于! 应该通过以下方式授予许可: 组件服务 -> 计算机 -> 我的电脑 -> DCOM 配置 -> Microsoft Visio 2003-2010 绘图

  1. 右击
  2. 属性
  3. 在安全选项卡中 -> 在所有 3 个选项中从“使用默认”更改为“自定义”。
  4. 在“身份”选项卡中 -> 更改为“此用户”选项并填写您的详细信息。
  5. 申请并确定

现在 Office 应用程序(在我们的例子中是 Visio)应该可以工作了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2021-06-16
    • 2013-07-27
    • 1970-01-01
    • 2018-11-08
    相关资源
    最近更新 更多