2009-07-20 38 views
1

我有一個標準的ASP.NET 2.0網站。
它有一個網頁頁面。
我在我的Company.Web.dll中有一個webpart,顯示在我的網站上的webpart頁面上。
一切都好!我現有的webparts在SharePoint中不起作用

我想在SharePoint 2007

使用此相同的WebPart我在VS2008使用擴展爲SharePoint 1.2「網站定義」項目。我嘗試過用各種方法將外部程序集中的webpart添加到我的網站定義中。我已經能夠部署webpart(它被添加到webpart頁面的webpart列表中),但是我沒有成功將它添加到頁面。

我的光榮失敗:

  1. 創建一個外殼的WebPart只是顯示現有的Web部件,基本上只是用我的一部分作爲對照。
  2. 試圖在創建新的Web部件時修改由VS2008創建的X.webpart和X.xml文件。

兩個結果在下面的錯誤,同時增加了Web部件的頁面:

異常 Microsoft.SharePoint.WebPartPages.WebPartPageUserException: 無法導入XXXX Web部件。
在Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(布爾 clearConnections)在 Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager 經理的XmlReader讀卡器,布爾 clearConnections,烏里webPartPageUri, 的SPWeb的SPWeb)在 微軟.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager 經理的XmlReader讀取器,布爾 clearConnections,的SPWeb的SPWeb)在 Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(字符串 eventArgument)

是否有一種特殊的方式需要將我現有的webpart添加到我的網站定義中?

+0

你可以編輯你的問題與實際問題是什麼? Web部分不可用還是出現錯誤? (另外,您是否知道VSeWSS 1.3:http://www.microsoft.com/downloads/details.aspx?familyid=FB9D4B85-DA2A-432E-91FB-D505199C49F6) – 2009-07-20 19:17:48

+0

有人有點苦我沒有'不要選擇他們的答案,因爲他們拒絕了所有其他的答案。抱歉的傢伙我投了一對夫婦,我確實發現有幫助。 – 2009-07-21 18:45:23

回答

1

這聽起來像是在部署時解決GUID問題,因爲您可以閱讀有關in this SO question的信息。

-2

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

+0

開發環境是WSS 3。0並且生產環境是MOSS 2007. – 2009-07-20 19:04:46

0

ASP.NET webparts和Sharepoint Webparts是不是相同。您應該可以在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部件基礎設施到Windows SharePoint Services 3.0 Web部件。
  • 創建跨頁面連接。
  • 在Web部件區域之外的Web部件之間創建連接。
  • 使用客戶端連接(Web部件頁服務組件)。
  • 使用允許緩存到內容數據庫的數據緩存基礎結構。

要使Sharepoint webpart在標準ASPNET應用程序中工作,您需要在Visual Studio(作爲ASPNET webpart)中重新創建您的Web部件,而無需Sharepoint 2007引用以使其正常工作。這是我在過去使用

一個極好的工具是SmartPart值得一試:

這可以讓你創建一個ASP.NET用戶控件(視覺)在Visual Studio中,然後在Sharepoint舉辦這個。 smartpart充當您的用戶控件的包裝。把它想象成Sharepoint中的頁面查看器webpart,除了它是ASP.NET頁面的用戶控件之外。

+1

不是真的。 「在Windows SharePoint Services中完全支持從ASP.NET WebPart類派生的Web部件」http://msdn.microsoft.com/zh-cn/library/ms452873.aspx – 2009-07-21 08:31:05

+0

注意到另一個向下選舉人。如果你打算投票,你至少可以留下評論 - 否則它會很粗魯。 – JamesM 2009-07-21 15:33:20

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,因爲它不那麼痛苦。