Krzysztof Maraszkiewicz

Krzysztof Maraszkiewicz C#, PHP,
Objective-C, Xcode,
JS, JQuery, MySQL,
CakePHP, ...

Temat: Błąd podczas instalowania features

Witam,
W celu nauki stowrzyłem sobie nową funkcje pod shrepoint, ktora dodaje nowy link do menu Akcje witryny, wszystko działało dobrze do momentu gdy, dodałem do tej funkcji jej obsługę w C#. Problem polega na tym, że w żaden sposób nie mogę tej funkcji deaktywować. W tym momencie wyskakuje mi błąd:

Nie można zainstalować funkcji f875601f-e72f-4365-ab77-82d6edb1566e, ponieważ ładowanie zestawu odbiornika zdarzeń HellWorld Version=1.0.0.0 Culture=neutral PublicKeyToken=824378421b21b667 nie powiodło się: System.IO.FileLoadException: Nie można załadować pliku lub zestawu 'HellWorld Version\=1.0.0.0 Culture\=neutral PublicKeyToken\=824378421b21b667' lub jednej z jego zależności. Podana nazwa zestawu lub ścieżka bazowa kodu jest niepoprawna. (Wyjątek od HRESULT: 0x80131047) 
Nazwa pliku: 'HellWorld Version\=1.0.0.0 Culture\=neutral PublicKeyToken\=824378421b21b667'
w System.Reflection.AssemblyName.nInit(Assembly& assembly, Boolean forIntrospection, Boolean raiseResolveEvent)
w System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
w System.Reflection.Assembly.Load(String assemblyString)
w Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()


Wydaje mi się że coś nie tak jest napisane w kodzie tej funkcji, tylko nie mam pojęcia co jest nie tak.
Kod features.xml wygląda następująco


<?xml version="1.0" encoding="utf-8" ?>
<Feature
Id="F875601F-E72F-4365-AB77-82D6EDB1566E"
Title="Rozdzia 1: Pierwsza funkcja Hello World"
Description="To jest moja pierwsza funkcja"
Scope="Web"
Version="1.0.0.0"
Hidden="False"
ImageUrl="menuprofile.gif"
xmlns="http://schemas.microsoft.com/sharepoint/"
ReceiverAssembly="HelloWorld, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=824378421b21b667"
ReceiverClass="HelloWorld.FeaturesRecaiver"
>

<ElementManifests>
<ElementManifest Location="elements.xml"/>
</ElementManifests>
</Feature>


Kod elements.xml:


<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="SiteActionsToolbar"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="100"
Title="Hello Word"
Description="Wartosc menu dodana do listy"
ImageUrl="_layouts/images/menuprofile.gif"
>
<UrlAction Url="http://wp.pl" />
</CustomAction>
</Elements>


Kod obsługi funkcji

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SharePoint;

namespace HelloWorld
{
public class FeaturesRecaiver : SPFeatureReceiver
{
public override void FeatureInstalled(SPFeatureReceiverProperties properties)
{ }

public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
{ }

public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWeb site = (SPWeb)properties.Feature.Parent;
site.Properties["OriginalTitle"] = site.Title;
site.Properties.Update();
site.Title = "Hello World";
site.Update();
}

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
{
SPWeb site = (SPWeb)properties.Feature.Parent;
site.Title = site.Properties["OriginalTitle"];
site.Update();
}


}

}

Dodam jeszcze dwie fotki
1. Z właściwościami GAC

Obrazek

2. Z kodem automatyzującym instalowanie funkcji oraz automatycznie dodajacy ja do GAC

Obrazek


Za każdą pomoc z góry dziękuje.

Pozdrawiam
Krzysztof MaraszkiewiczKrzysztof Maraszkiewicz edytował(a) ten post dnia 19.08.10 o godzinie 09:45
Konrad K.

Konrad K. Jack of all trades,
master of none

Temat: Błąd podczas instalowania features

Pokaż proszę zawartość pliku install.bat.

Na pierwszy rzut oka wygląda, jakby pula aplikacji nie widziała assembly w GACu. Robiłeś recycle application poola, przed instalacją/aktywacją feature? Do momentu przekręcenia puli/restartu iisa, dllka, nawet dodana gacutilem, nie będzie widziana przez proces SharePointa.
Krzysztof Maraszkiewicz

Krzysztof Maraszkiewicz C#, PHP,
Objective-C, Xcode,
JS, JQuery, MySQL,
CakePHP, ...

Temat: Błąd podczas instalowania features

Oto zawartość pliku instal.bat

REM - @SET TEMPLATEDIR="C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE"
@SET STSADM="C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\STSADM"

Echo kopiowanie plikow
xcopy /e /y TEMPLATE\* %TEMPLATEDIR%

Echo Instalowanie funkcji
%STSADM% -o InstallFeature -filename HelloWorld\feature.xml -force

Echo Ponowne uruchomienie procesu roboczego IIS

IISRESET


Na samym początku zainstalowałem plik do GAC za pomoca gacutil /i [sciezka do pliku dll]
Oczywiście zrestartowałem IIS za pomocą komendy IISRESET w wierszu poleceń.
Czy recycle robi się za pomocą stdamd.exe? Nie do końca rozumiem co to jest recycle applacation.
Konrad K.

Konrad K. Jack of all trades,
master of none

Temat: Błąd podczas instalowania features

Pulą aplikacji nie sterujemy bezpośrednio za pomocą stsadma (raczej pośrednio - pula jest odtwarzana przy robieniu komendy deploy rozwiązania).

Polecam odtwarzanie konkretnej puli aplikacji zamiast pełnego iisreset - jest to rozwiązanie szybsze.

Więcej o pulach aplikacji

W komunikacie błędu masz nazwe assembly HellWorld, a nie HelloWorld. Natomiast w feature.xml jako receiverassembly jest HelloWorld. Czy zmieniałeś może feature.xml po zainstalowaniu (prawdopodobnie była literówka)?. Jeśli tak, spróbuj odinstalować funkcję stsadmem, nadpisać pliki funkcji raz jeszcze i ponownie zainstalować funkcję. Powinno zadziałać.Konrad K. edytował(a) ten post dnia 19.08.10 o godzinie 11:52
Krzysztof Maraszkiewicz

Krzysztof Maraszkiewicz C#, PHP,
Objective-C, Xcode,
JS, JQuery, MySQL,
CakePHP, ...

Temat: Błąd podczas instalowania features

Dziękuje za pomoc, pomogło.
W takim razie, aby wprowadzić zmiany w features, musze za kazdym razem je odinstalowac i od nowa zainstalowac?
Konrad K.

Konrad K. Jack of all trades,
master of none

Temat: Błąd podczas instalowania features

Jeżeli robisz zmiany w kodzie C#, wystarczy ponownie wrzucić dllkę do GACa i przekręcić pulę aplikacji. Jeżeli zmieniasz pliki xml funkcji, najbezpieczniej jest odinstalować i zainstalować funkcję ponownie (ja dla pewności po odinstalowaniu przekęcam pulę aplikacji).

Z jakiegoś dziwnego powodu atrybut force stsadma nie do końca działa w tej kwestii poprawnie.Konrad K. edytował(a) ten post dnia 19.08.10 o godzinie 12:54

Następna dyskusja:

bład podczas kompilacji




Wyślij zaproszenie do