1

我正在使用dotnet-mammothmammoth.jsedge.js)将 .net 中的 docx 文档转换为 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 日志文件中保存任何内容。

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

4

2 回答 2

2

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

于 2016-05-03T23:08:31.653 回答
0

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

public Result<string> 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

于 2015-09-02T05:29:28.353 回答