0

我在 SharePoint 2010 中有一个自定义应用程序页面。一切正常,直到我在后面的代码中放入一段 C# 代码。当我添加:

Document document = new Document();
document.LoadFromFile(@"C:\TestFolder\MYDOC.DOC");

document.SaveToFile(@"C:\Files\MYDOC.PDF", FileFormat.PDF);

当我添加此代码时,我收到此错误:

File Not Found

此自定义应用程序页面使用名为 Spire.Doc 的第三方 PDF dll。该 DLL 被添加到包中,并且即使 DLL 在包中,而上面的代码不存在,也不会出现错误。仅当上述代码位于自定义应用程序页面的代码中时,才会发生该错误。有任何想法吗?我完全被困住了。

谢谢!

4

2 回答 2

1

导致此错误的原因可能有很多。

首先尝试查看 SharePoint 日志,您可以在其中使用堆栈跟踪找到更多扩展诊断信息。它将允许您确定错误是由这段特定的代码引起的。

第二:确保您的文档确实存在于磁盘上。

第三:SharePoint 是一个复杂的系统,对其权限和角色的进入门槛很高。您(使用您的应用程序页面的帐户)应该有适当的权限来处理磁盘上的文件。检查应用程序页面的上下文 - 例如,当帐户在一个子站点中是管理员http://root/sites/subsite并导航到应用程序页面时,http://root/_layouts/apppage他可能不是根站点的管理员。无论如何,您可以尝试使用提升的权限调用您的代码。就像是

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    Document document = new Document();
    document.LoadFromFile(@"C:\TestFolder\MYDOC.DOC");
    document.SaveToFile(@"C:\Files\MYDOC.PDF", FileFormat.PDF);
});
于 2013-02-16T08:50:12.387 回答
0

根据我的经验,该file not found页面表明那里没有找到自定义错误页面。

就像 Oleg Savelyev 指出的那样,这可能是读取/写入本地磁盘的权限问题。

使用 Memorystream 显示或保存 PDF 文档可能是个好主意。

HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ClearHeaders();
HttpContext.Current.Response.AddHeader("Content-Disposition", "inline;filename=MYDOC.PDF");
HttpContext.Current.Response.ContentType = "application/pdf";
HttpContext.Current.Response.WriteFile();
HttpContext.Current.Response.Flush();
HttpContext.Current.Response.Clear();

使用它来将 html 保存为 PDF。也可以处理 .doc 文件。如果不查看 http://www.aspose.com/.net/word-component.aspx以获取 PDF 文件。

希望这会有所帮助。

于 2013-11-05T12:10:23.250 回答