使用dotnet-mammoth将docx转换为html在部署服务器上失败

我正在使用dotnet-mammoth (带有edge.js的mammoth.js )将docx文档转换为.net中的html
我通过它的nuget包将它添加到我的项目中。

我正在使用示例提供的代码,该代码在我的开发环境(运行IIS Express)中正常工作:

var documentConverter = new Mammoth.DocumentConverter(); var result = documentConverter.ConvertToHtml(Server.MapPath("~/files/document.docx")); // problem here at production enviroment string theResult = result.Value 

但是,一旦我将其部署到生产服务器,当执行的代码到达documentConverter.ConvertToHtml()方法时,它会将我重定向到登录页面。 不显示任何错误消息,而不保存IIS日志文件中的任何内容。

如果我删除该行,其他一切正常执行。 我认为它可能是与权限相关的问题,但我不知道它会是什么。 有任何想法吗?

NuGet上最新版本的Mammoth不再使用edge.js,现在只是.NET代码,所以应该更可靠地工作。

您可以通过在进程尝试读取文件时获取确切错误来解决此问题。 下面是dotnet-mammoth DocumentConverter.cs的代码。 如下所示,它正在尝试读取要发送到边缘的所有字节

 public Result ConvertToHtml(string path) { var mammothJs = ReadResource("Mammoth.mammoth.browser.js") + ReadResource("Mammoth.mammoth.edge.js"); var f = Edge.Func(mammothJs); var result = f(File.ReadAllBytes(path)); Task.WaitAll(result); return ReadResult(result.Result); } 

我想你正在给出输入的绝对路径。 在这种情况下,绝对路径应该可以通过托管Web应用程序的应用程序池的应用程序标识来访问。

如果指定的路径位于Web根目录中 – (不建议) – 但如果是,则可以使用Server.MapPath