我现有的webparts不适用于SharePoint

时间:2009-07-20 18:21:00

标签: c# asp.net sharepoint deployment web-parts

我有一个标准的ASP.NET 2.0网站 它有一个网页页面 我的Company.Web.dll中有一个webpart,我在我网站的webpart页面上显示。一切都很好!!!

我想在SharePoint 2007中使用相同的webpart。

我在VS2008中使用Extensions for SharePoint 1.2进行了“网站定义”项目。我已经尝试了各种方法将webpart从外部程序集添加到我的网站定义。我已经能够部署webpart(它被添加到webpart页面的webpart列表中),但是我没有成功将它添加到页面中。

我的光荣失败:

  1. 创建了一个shell webpart来显示现有的Web部件,基本上只是将我的部件用作控件。
  2. 创建新的webpart时,尝试修改VS2008创建的X.webpart和X.xml文件。
  3. 将Web部件添加到页面时,两者都会导致以下错误:

      

    异常   Microsoft.SharePoint.WebPartPages.WebPartPageUserException:   无法导入XXXX Web部件       在Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(布尔值   clearConnections)   Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager   经理,XmlReader阅读器,布尔   clearConnections,Uri webPartPageUri,   SPWeb spWeb)在   Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager   经理,XmlReader阅读器,布尔   clearConnections,SPWeb spWeb)at   Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串   eventArgument)

    我需要将现有的网站部分添加到网站定义中吗?

4 个答案:

答案 0 :(得分:1)

这听起来像是在部署时解决GUID的问题,因为您可以阅读in this SO question

答案 1 :(得分:0)

ASP.NET webparts和Sharepoint Webparts NOT 相同。您应该能够在Sharepoint中使用ASPNET webpart。见下表:

ASP.NET 2.0 Web部件

  • 满足大多数业务需求。
  • 将Web部件分发到运行ASP.NET 2.0或SharePoint站点的站点。
  • 如果要重用在SharePoint网站上为ASP.NET 2.0网站创建的一个或多个Web部件。
  • 使用Windows SharePoint Services 3.0提供的数据或功能。例如,您正在创建一个与站点或列表数据一起使用的Web部件。

基于SharePoint的Web部件

  • 如果要使用基于SharePoint的Web部件基础结构将一组Web部件迁移到Windows SharePoint Services 3.0。
  • 创建跨页面连接。
  • 在Web部件区域之外的Web部件之间创建连接。
  • 使用客户端连接(Web部件页面服务组件)。
  • 使用允许缓存内容数据库的数据缓存基础结构。

要使Sharepoint webpart在标准ASPNET应用程序中工作,您需要在Visual Studio(作为ASPNET webpart)中重新创建Web部件,而不使用Sharepoint 2007引用它才能正常工作。

我过去使用的一个漂亮的工具是SmartPart值得一试:

这使您可以在Visual Studio中创建ASP.NET用户控件(可视化),然后在Sharepoint中托管它。 smartpart充当用户控件的包装器。可以把它想象成Sharepoint中的页面查看器webpart,而不是它的ASP.NET用户控件的HTML页面。

答案 2 :(得分:0)

要查找Web部件无法导入的详细信息,请查看ULS日志。这些通常位于%CommonProgramFiles%\Microsoft Shared\web server extensions\12\LOGS。在您尝试将Web部件添加到页面时,将在此处记录条目。这应该会给你更多细节。

我的猜测是这是一个代码访问安全问题。您的Web部件必须是强签名的,并且需要SharePoint Web应用程序的web.config中的SafeControl条目。除了这些之外,你应该能够将它添加到全局程序集缓存中以测试它是否有效(最佳做法是编写CAS策略文件)。有关详细信息,请参阅Deploying Web Parts in Windows SharePoint Services

在尝试将其作为网站定义的一部分进行集成之前,我会尝试这些步骤。那么至少你知道web部分实际上会运行。

此外,VSeWSS实际上是专为从一开始就使用它开发Web部件而设计的。如果您有原始源,则可以尝试使用VSeWSS创建新的Web部件,然后使用自定义代码替换并更新.webpart和功能XML文件。然后它应该表现得更好一点。如果您尚未承诺使用VSeWSS,请尝试WSPBuilder,因为它不那么痛苦。

答案 3 :(得分:-2)

您需要WSS 3.0,SharePoint MOSS或2007才能使用ASP.NET 2.0 WebParts。 SharePoint 2003或更低版本以及WSS 2.0或更低版本不支持ASP.NET WebParts。