2008-09-23 39 views
11

Tôi có một phần web mà tôi đã phát triển và nếu tôi cài đặt phần web theo cách thủ công thì tốt.Lỗi SharePoint: "Không thể nhập Phần Web"

Tuy nhiên khi tôi đã đóng gói phần web theo các hướng dẫn trên trang web này như một hướng dẫn: http://www.theartofsharepoint.com/2007/05/how-to-build-solution-pack-wsp.html

tôi nhận được lỗi này trong các tập tin log:

09/23/2008 14:13:03.67 w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      8l4d Monitorable Error importing WebPart. Cannot import Project Filter. 
09/23/2008 14:13:03.67 w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      89ku High  Failed to add webpart http%253A%252F%252Fuk64p12%252FPWA%252F%255Fcatalogs%252Fwp%252FProjectFilter%252Ewebpart;Project%2520Filter. Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import Project Filter.  at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(... 
09/23/2008 14:13:03.67* w3wp.exe (0x1B5C)       0x1534 Windows SharePoint Services  Web Parts      89ku High  ...String eventArgument)  

Các bit thích hợp là:

http%253A%252F%252Fuk64p12%252FPWA%252F%255Fcatalogs%252Fwp%252FProjectFilter%252Ewebpart;Project%2520Filter. 
Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import Project Filter. 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections) 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb) 
at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb) 
at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 

Và đó là kèm theo thông báo lỗi khá ngắn gọn: "Không thể nhập phần web".

Tôi đã kiểm tra và .dll của tôi được đăng ký an toàn, nó nằm trong GAC, tính năng được kích hoạt và các phần web xuất hiện trong thư viện phần web với tất cả các thuộc tính chính xác cho thấy tệp webpart đã được đọc thành công.

Mọi thứ dường như được đặt ra, nhưng tôi nhận được lỗi đó và giải thích nhỏ từ SharePoint về cách giải quyết.

Bất kỳ trợ giúp nào tìm được giải pháp đều được đánh giá cao.

Trả lời

8

Đã tìm ra.

Các thông báo lỗi là một trong những từ tập tin .webpart:

<?xml version="1.0" encoding="utf-8"?> 
<webParts> 
    <webPart xmlns="http://schemas.microsoft.com/WebPart/v3"> 
    <metaData> 
     <!-- 
     The following Guid is used as a reference to the web part class, 
     and it will be automatically replaced with actual type name at deployment time. 
     --> 
     <type name="7F8C4D34-6311-4f22-87B4-A221FA8735BA" /> 
     <importErrorMessage>Cannot import Project Filter.</importErrorMessage> 
    </metaData> 
    <data> 
     <properties> 
     <property name="Title" type="string">Project Filter</property> 
     <property name="Description" type="string">Provides a list of Projects that can be used to Filter other Web Parts.</property> 
     </properties> 
    </data> 
    </webPart> 
</webParts> 

Vấn đề là các tập tin .webpart ban đầu đã được tạo ra trên một hệ thống 32-bit với Visual Studio Extensions cho WSS cài đặt.

Tuy nhiên, hiện tại tôi đang sử dụng máy 64 bit VSEWSS không khả dụng và tôi tin rằng kết quả GUID ở trên không được thay thế vì tôi không sử dụng các công cụ triển khai đó.

Thay thế GUID bằng tên loại đầy đủ hoạt động.

Vì vậy, nếu bạn gặp thông báo lỗi từ nút importErrorMessage của bạn, sau đó kiểm tra xem loại nút của bạn trong file .webpart trông giống như thế này (ví dụ không liên quan):

<type name="TitleWP.TitleWP, TitleWP, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" /> 

này được ghi theo dạng: Lớp, Không gian tên, Phiên bản, Văn hóa, PublicKey

Bạn có thể lấy dễ dàng từ tệp web.config được kết hợp với cá thể SharePoint của bạn, vì nó sẽ nằm trong danh sách điều khiển an toàn.

0

Bạn đã tái chế quy trình công nhân của mình hay đặt lại IIS?

+0

Tôi sẽ dùng thử. Tôi đã không. –

+0

Không ... không hoạt động. Lỗi tương tự và cùng một mục nhập tệp nhật ký. –

1

Bây giờ tôi nhận được một câu trả lời cho vấn đề tương tự như sau:

Khi tôi cố gắng thêm một phần wep mới để trang, sau đó SharePoint chỉ cho tôi một thông báo lỗi, cho tôi biết - Không thể nhập phần web của tôi , thông báo lỗi này xác định trong tệp .webpart.

Vì vậy, tôi đã cố gắng thêm một số phần web ồ ạt trong trang, Một xuất hiện quesiton lạ, một số trong số chúng có thể được thêm vào, một số trong số chúng không thể được thêm vào.

Sau khi tôi bắt nguồn từ mã của phần web của tôi và anaylsis họ, tôi thấy lý do:

Mã Cũ cho web phần ProjectInfo (tên phần web của tôi) là:

namespace ProjectInfo 
.... 
public class ProjectInfo:System.Web.UI.WebControls.WebParts.Web.part 
{ 
     ..... 
     private SPWeb _spWeb; 
     private SPList _spList; 
     private string _listName = "ProjectDocs"; 
     ...... 
} 
public ProjectInfo() 
{ 
     ..... 
      _spWeb = SPContext.Current.Web; 
      //It show me a error here when i trace the code 
      _spList = _spWeb.Lists[_listName]; 
     ..... 
} 

Dừng bây giờ, Tôi nghĩ rằng nó có thể là vấn đề trật tự trang web init. AS trang web tải kiểm soát một phần web, chức năng xây dựng ProjectInfo() sẽ được chạy lúc đầu tiên. Trên thực tế, trang web không kết thúc init của nó. vào thời điểm đó.

vì vậy tôi đã làm một thử nghiệm. trước tiên, tôi đặt một trang web tốt trong trang, không sao cả. sau đó, tôi cố gắng để đưa các phần web trong trang mà không thể được thêm vào ngay bây giờ. ~~ OK !! Nó đang hoạt động ... bởi vì trang đã bắt đầu. đã kết thúc.

Ok! Tôi sửa lại mã của tôi:

namespace ProjectInfo 
    .... 
    public class ProjectInfo:System.Web.UI.WebControls.WebParts.Web.part 
    { 
      ..... 
      private SPWeb _spWeb; 
      private SPList _spList; 
      private string _listName = "ProjectDocs"; 
      ...... 
    } 
    public ProjectInfo() 
    { 
      ..... 
       //Remove code in constructure function. 
       //_spWeb = SPContext.Current.Web; 
       //It show me a error here when i trace the code 
       //_spList = _spWeb.Lists[_listName]; 
      ..... 
    } 

    protected override void CreateChildControls() 
     { 
     .... 
      base.CreateChildControls(); 

      _spWeb = SPContext.Current.Web; 
      _spList = _spWeb.Lists[_listName]; 
      .... 
     } 

Sau khi tôi kiểm tra, thông báo lỗi did't happed lần nữa .. LoL ~~

Hy vọng điều này giải thích sẽ giúp bạn.

0

Mỏ đã được xử lý.

tôi đã nhận được lỗi này:

=========================================================================== 
Error importing WebPart. Cannot import ........ Web Part. 
Failed to add webpart 
Exception Microsoft.SharePoint.WebPartPages.WebPartPageUserException: Cannot import ... Web Part.  at Microsoft.SharePoint.WebPartPages.WebPartImporter.CreateWebPart(Boolean clearConnections)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, Uri webPartPageUri, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartImporter.Import(SPWebPartManager manager, XmlReader reader, Boolean clearConnections, SPWeb spWeb)  at Microsoft.SharePoint.WebPartPages.WebPartQuickAdd.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
=========================================================================== 

"Không thể nhập webpart ..."

Vấn đề là: Không phù hợp với GUIDS

Kiểm tra nếu guid trên lớp webpart, và trong lớp .xml và trong .webpart đều giống nhau.

Tôi đã sao chép mã từ các nguồn webparts khác. (Mutliple Document Tải lên Wepart trên Codeplex) và quên để sửa chữa guids.

0

Tôi cũng đã gặp phải lỗi này khi các hội đồng trong GAC mà phần web của tôi được tham chiếu, được ký bằng một tệp khóa tên mạnh khác với những gì tôi mong đợi. Tôi đã tìm thấy điều này khi quyết định cập nhật các tệp DLL này. Khi chèn nó vào GAC tôi nhận thấy rằng có 2 mục cho cùng một DLL nhưng chúng có các Mã khóa công khai khác nhau

0

Tôi gặp lỗi này khi tạo một phần của lớp cơ sở và kế thừa một lớp dẫn xuất từ ​​nó. Lớp cơ sở là tốt nhưng lớp dẫn xuất không thành công khi tôi cố gắng thêm nó vào một trang web có lỗi giống như bài gốc. Trong trường hợp của tôi, tôi đã có thêm một công modifier vào trong lớp:

public class DerivedWebPart : BaseWebPart 

Ngoài ra tôi thêm một constructor trong lớp được thừa kế để gọi lớp cơ sở một - mặc dù tôi nghĩ bạn không nên cần điều này thực sự:

public DerivedWebPart() : base() 
    { 
    } 
6

chúng tôi có vấn đề này giống nhau và phát hiện ra rằng các nhà xây dựng của phần web của chúng tôi đã được gọi bằng các WebPartImporter và trong các nhà xây dựng chúng tôi đã làm SPSecurity.RunWithElevatedPrivileges.

Vì một số lý do mà WebPartImporter không thể xử lý việc này. Vì vậy, chúng tôi chỉ đơn giản là di chuyển mã của chúng tôi ra khỏi nhà xây dựng để OnInit (nơi nó thực sự thuộc về) và tất cả là tốt.

+1

Câu trả lời này là một phao cứu sinh! Tôi nhấn cùng một vấn đề với một phần web mà tôi đã cho System.Net.WebPermission. Tôi đã thêm thuộc tính [System.Net.WebPermission (System.Security.Permissions.SecurityAction.Demand, Unrestricted = true)] vào toàn bộ lớp chứ không phải là phương thức cụ thể cần sự cho phép. – ngm

1

Tôi đã thấy sự bất thường này nhiều lần mà không có độ phân giải tốt.

Kiểm tra xem Assembly, Namespace, Class name của bạn có đúng EVERYWHERE không. Điều này đã treo tôi lên hơn một lần.

Đảm bảo bạn có mục nhập SafeControls hợp lệ.

Đảm bảo rằng tệp .webpart của bạn là hợp lệ (để cho SharePoint tạo nó cho bạn nếu bạn có thể)

Nếu bạn hoàn toàn tích cực rằng mọi thứ đều đúng, cũng sau đó bạn đang bị mắc kẹt ở một nơi mà tôi đã có một số lần. Điều duy nhất mà tôi có thể nghĩ ra là VS đang biên dịch lắp ráp sai. CHỈ sửa chữa mà tôi đã tìm thấy là tạo một dự án VS mới và thiết lập nó theo cách bạn cần, sau đó sao chép TEXT của các tệp CS cũ của bạn vào các tệp CS mới ... không tự sao chép các tệp ... là có mọi thứ mới mẻ.

Điều này đã hiệu quả đối với tôi. Chúc may mắn.

0

Tôi thấy rằng tôi không nhập lần đầu tiên, nhưng nếu tôi nhấp vào 'Mới' và thêm vào, nó sẽ hoạt động.

Từ đó tôi đã lấy một bản sao của XML và lưu nó vào dự án của tôi. Phần web đã làm việc rất tốt sau đó.

Nó chỉ mất tôi DAYS để đến thời điểm này. Rất nhiều thời gian lãng phí.

0

Tôi gặp sự cố rất giống với vấn đề này nhưng Guids không phải là vấn đề: webpart của tôi không có thuộc tính CLSCompliannt được đặt thành false. Giống như vậy:

namespace MyNamespace 
{ 

    [CLSCompliant(false)] 
    [Guid("...")] 
    public class MyWidget : MyWebPartBaseClass 
    { 

    } 
} 
2

Tất cả các đề xuất tuyệt vời. Vấn đề của tôi là duy nhất và ngớ ngẩn: Tôi đã triển khai giải pháp cho Ứng dụng web đầu tiên nhưng không triển khai giải pháp thứ hai. Tuy nhiên, SharePoint vẫn cho phép tôi kích hoạt tính năng này trên Bộ sưu tập Trang web của Ứng dụng Web thứ hai (không chắc chắn lý do). Điều này có nghĩa là Web App thứ hai không có một mục kiểm soát an toàn trong tệp Web.config này (và tôi đã kiểm tra một cách ngu ngốc Web.config đầu tiên).

Vì vậy, hãy kiểm tra kỹ xem bạn đang tìm đúng ứng dụng web/web.config chưa.

Các vấn đề liên quan