我正在使用dotnet-mammoth(mammoth.js和edge.js)将docx文档转换为.net中的html 我通过nuget package将它添加到我的项目中。
我正在使用示例提供的代码,该代码在我的开发环境中正常运行(运行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日志文件中的任何内容。
如果删除该行,则其他所有内容都会正常执行。 我认为它可能是与权限相关的问题,但我不知道它会是什么。有什么想法吗?
答案 0 :(得分:2)
NuGet上最新版本的Mammoth不再使用edge.js,现在只是.NET代码,所以应该更可靠地工作。
答案 1 :(得分: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