【问题标题】:OfficeConverter issue when deploying to Azure App Service部署到 Azure 应用服务时的 OfficeConverter 问题
【发布时间】:2021-08-25 01:46:23
【问题描述】:

我有一个简单的网络 API

  • 克隆 .docx 文件
  • 将克隆的 .docx 转换为 .pdf 格式
using DocumentFormat.OpenXml.Packaging;


[HttpPost("clone")]
public IActionResult CloneBillFromTemplate()
{
     var templateFilePath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "Bill", "PaymentTempl.docx");
     var clonedFilePath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "Bill", "ClonedBill.docx");
     var pdfFilePath = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "Bill", "FinalBill.pdf");
     
     using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(templateFilePath, true))
     {
         var clonedDoc = wordDoc.Clone(clonedFilePath);
         System.Threading.Thread.Sleep(500);
         clonedDoc.Save();
         clonedDoc.Close();
     }

     using (var converter = new OfficeConverter.Converter())
     {
         converter.Convert(clonedFilePath, pdfFilePath);
     }

     return Ok();
}

在调试(肯定:3)和 IIS 时一切正常

但是当我部署到 Azure 应用服务时,我得到了这种类型的错误(堆栈跟踪 + 异常消息)。

无法读取注册表以检查 Word 版本

找不到注册表项 Word.Application\CurVer 在 OfficeConverter.Word..ctor() 在 OfficeConverter.Converter.get_Word() 在 OfficeConverter.Converter.Convert(String inputFile, String outputFile, Stream logStream) at ....

你们能帮我解决这个问题吗?谢谢大家!!!

**随时询问您需要检测此问题的更多信息

更新 看起来这是我正在使用的 pdf 转换器包的问题,​​而不是 OpenXML

【问题讨论】:

  • 你能粘贴整个堆栈跟踪消息吗
  • @Sajeetharan 嗨,刚刚更新了包含堆栈跟踪的问题
  • 好吧,我认为这个问题不是在打开的 xml 上,而是在我用来转换为 pdf 文件的其他 pacakge 上

标签: c# azure azure-web-app-service openxml


【解决方案1】:

您的应用程序似乎以不受支持的方式依赖于 Windows 注册表。如果您在 Linux 应用服务上运行,那将是第一个换出的东西,尽管我猜您已经在 Windows 上运行。

应用程序对其运行的虚拟机的大部分(尽管不是全部)注册表具有只读访问权限。实际上,这意味着应用程序可以访问允许对本地用户组进行只读访问的注册表项。目前不支持读取或写入访问的注册表区域是 HKEY_CURRENT_USER 配置单元。

对注册表的写访问被阻止,包括对任何每个用户的注册表项的访问。

https://docs.microsoft.com/en-us/azure/app-service/operating-system-functionality#registry-access

如果您无法重构代码以不依赖此类依赖项,我建议您将应用程序放在Windows docker container 中。如果你可以在本地运行它,它也应该在应用服务上运行。

【讨论】:

    猜你喜欢
    • 2022-01-25
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-24
    • 2021-10-16
    • 2019-11-28
    • 2021-03-04
    • 1970-01-01
    相关资源
    最近更新 更多