2010-05-26 76 views
2

我正在使用自定义WebPart,为此我需要应用程序页面来呈现PDF文件。显示PDF - 应用程序页面SharePoint

我目前使用以下链接http://support.microsoft.com/kb/306654

它工作正常,在ASP.NET,但在SharePoint中给出了一个空白页。

下面的代码: (PDF文件在同一目录)

 Response.ClearContent(); 
     Response.ClearHeaders(); 
     //Set the appropriate ContentType. 
     Response.ContentType = "Application/pdf"; 
     //Get the physical path to the file. 
     string FilePath = MapPath("Test.pdf"); 
     //Write the file directly to the HTTP content output stream. 
     Response.WriteFile(FilePath); 
     Response.Flush(); 
     Response.End(); 

工作于它的最后几个小时,让我疯了...任何想法?

+0

问题可能是这一行:string FilePath = MapPath(“Test.pdf”); 。你确定文件存在吗(当在sharepoint下运行时)? – 2010-05-26 01:45:41

+0

@Raj:这不是问题。文件在同一个文件夹中。另外,如果我使用Byte数组编写PDF,它在ASP.NET中工作,我面临同样的问题。 – spt3210 2010-05-26 13:05:51

+0

我意识到它可以在ASP.NET中使用,但是您的Web部件甚至在Sharepoint中执行?删除Web部件中的所有代码并放入Response.Write(“hello”)。该行是否执行? – 2010-05-26 16:08:09

回答

1

几个想法:

  1. 如果文件中的SharePoint目录,为什么不直接重定向到它的URL?

  2. 如果您使用Fiddler(或Firebug)查看HTTP流量 - 您是否看到内容类型更改?什么是内容(是否为PDF?)

  3. SharePoint和ASP.NET之间的主要区别(假设您正确地获取文件)是页面生命周期略有不同,安全模型。你可能想看看Reponse.End()如何工作,以确保它在SharePoint中没有不同。您可以在详细日志记录中运行SharePoint,然后在SharePoint dll上使用.NET Reflector(将日志作为指南),以查看是否有某种奇怪的方式来处理此问题。 SharePoint dll具有相当宽松的日志调用。更多的信息在这里:http://www.andrewconnell.com/blog/archive/2008/06/11/SharePoint-Debugging-and-Logging-Tips-and-Tricks.aspx

  4. 你有没有考虑栅格化PDF并在页面中直接显示它?这是我们公司正在致力于在SharePoint中查看PDF和其他文档的项目(Vizit)。您仍然需要解决阅读文件的问题,但是您不必使用PDF进行回复,而是使用PNG格式和<img>标签内的请求进行响应。

+0

谢谢你的回答。我会在周末检查这个,然后更新你。计划从现在开始检查调试选项。 – spt3210 2010-05-28 19:13:44

+0

问题原来是腐败PDf安装。谢谢你的帮助。 – spt3210 2010-06-01 17:11:41

相关问题