我有一个标准的ASP.NET 2.0网站 它有一个网页页面 我的Company.Web.dll中有一个webpart,我在我网站的webpart页面上显示。一切都很好!!!
我想在SharePoint 2007中使用相同的webpart。
我在VS2008中使用Extensions for SharePoint 1.2进行了“网站定义”项目。我已经尝试了各种方法将webpart从外部程序集添加到我的网站定义。我已经能够部署webpart(它被添加到webpart页面的webpart列表中),但是我没有成功将它添加到页面中。
我的光荣失败:
将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)
我需要将现有的网站部分添加到网站定义中吗?
答案 0 :(得分:1)
这听起来像是在部署时解决GUID的问题,因为您可以阅读in this SO question。
答案 1 :(得分:0)
ASP.NET webparts和Sharepoint Webparts NOT 相同。您应该能够在Sharepoint中使用ASPNET webpart。见下表:
ASP.NET 2.0 Web部件
基于SharePoint的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。