Standardowym scenariuszem deploy'u webpartów jest umieszczenie plików dll zawierających kod webpartów w GACu lub binie, stworzenie manifestu i umieszczenie go w galerii składników webpart oraz dodanie odpowiedniego wpisu safecontrol do pliku web.config web aplikacji, w której chcemy skorzystać z naszego rozwiązania.
Problem pojawia się w momencie, gdy ten prosty wydawałoby się scenariusz nie zadziała.
Dosyć częstym komunikatem, który się pojawiaja gdy coś poszło nie tak jest:
Błąd składnika Web Part: Nie można wyświetlić lub zaimportować składnika Web Part lub formantu formularza sieci Web na tej stronie. Nie można znaleźć typu lub nie został on zarejestrowany jako bezpieczny.
Pokaż szczegóły błędu
Ukryj szczegóły dotyczące błędu
[UnsafeControlException: Nie można wyświetlić lub zaimportować składnika Web Part lub formantu formularza sieci Web na tej stronie. Nie można znaleźć typu lub nie został on zarejestrowany jako bezpieczny.]
at Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(Guid guid)
at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts)
Ten błąd informuje nas w zasadzie tylko o tym, że coś poszło nie tak i sami musimy stwierdzić co.
Jedną z możliwości jest, że nie został dodany wpis safecontrol do pliku web.config. Możemy to zweryfikować przeglądając plik web.config w katalogu głównym web aplikacji, w której chcemy skorzystać ze składnika webpart. Standardowym katalogiem dla aplikacji działających na porcie 80-tym jest katalog C:\inetpub\wwwroot\wss\VirtualDirectories\80.
Jeśli wpis safecontrol jest poprawny drugą możliwością jest niezaładowanie się pliku dll. Najlepiej wtedy odnaleźć manifest wadliwego składnika webpart w galerii składników webpart i zobaczyć, czy w GACu lub binie znajduje się plik dll, który jest wymieniony w manifeście. Jeśli go brakuje musimy zwerfyikować dlaczego go tam nie. W przeciwnym przypadku możemy dokonać recyclingu puli aplikacji lub reset serwera IIS. Gdy to się nie powiedzie możemy skorzystać z narzędzia Fuslog Viewer. Więcej informacji o tym narzędziu znajduje się tutaj
Co jednak w przypadku, gdy webpart wyrzuca nieobsłużony wyjątek i cała strona przestaje działać? Z pomocą przychodzi nam Webpart Maintenance Page. Jest to bardzo przydatna sztuczka, o której wielu ludzi zapomina. Do adresu strony, która przestała działać, można dodać parametr ?contents=1 i wtedy pojawi się strona, na której możemy zarządzać składnikami webpart. Ukrywając po kolei składniki webpart możemy zdiagnozować, który z nich powoduje błąd.
Błąd składnika Web Part: Nie można wyświetlić lub zaimportować składnika Web Part lub formantu formularza sieci Web na tej stronie. Nie można znaleźć typu lub nie został on zarejestrowany jako bezpieczny.
Pokaż szczegóły błędu
Ukryj szczegóły dotyczące błędu
[UnsafeControlException: Nie można wyświetlić lub zaimportować składnika Web Part lub formantu formularza sieci Web na tej stronie. Nie można znaleźć typu lub nie został on zarejestrowany jako bezpieczny.]
at Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(Guid guid)
at Microsoft.SharePoint.WebPartPages.SPWebPartManager.CreateWebPartsFromRowSetData(Boolean onlyInitializeClosedWebParts)
Ten błąd informuje nas w zasadzie tylko o tym, że coś poszło nie tak i sami musimy stwierdzić co.
Jedną z możliwości jest, że nie został dodany wpis safecontrol do pliku web.config. Możemy to zweryfikować przeglądając plik web.config w katalogu głównym web aplikacji, w której chcemy skorzystać ze składnika webpart. Standardowym katalogiem dla aplikacji działających na porcie 80-tym jest katalog C:\inetpub\wwwroot\wss\VirtualDirectories\80.
Jeśli wpis safecontrol jest poprawny drugą możliwością jest niezaładowanie się pliku dll. Najlepiej wtedy odnaleźć manifest wadliwego składnika webpart w galerii składników webpart i zobaczyć, czy w GACu lub binie znajduje się plik dll, który jest wymieniony w manifeście. Jeśli go brakuje musimy zwerfyikować dlaczego go tam nie. W przeciwnym przypadku możemy dokonać recyclingu puli aplikacji lub reset serwera IIS. Gdy to się nie powiedzie możemy skorzystać z narzędzia Fuslog Viewer. Więcej informacji o tym narzędziu znajduje się tutaj
Co jednak w przypadku, gdy webpart wyrzuca nieobsłużony wyjątek i cała strona przestaje działać? Z pomocą przychodzi nam Webpart Maintenance Page. Jest to bardzo przydatna sztuczka, o której wielu ludzi zapomina. Do adresu strony, która przestała działać, można dodać parametr ?contents=1 i wtedy pojawi się strona, na której możemy zarządzać składnikami webpart. Ukrywając po kolei składniki webpart możemy zdiagnozować, który z nich powoduje błąd.