Løsningen på problemet: “FileNotFoundException” Med min funksjonen-mottaker.

Jeg jobbet på en funksjon forrige uke som ville legge noen hendelsesmottakere til en bestemt liste. (Jeg blogged litt om her som liste-mottaker).

Ved hjelp av kommandolinjen, Jeg kunne installere funksjonen uten feil (Men se nedenfor for skjulte feil). Når jeg forsøkt å distribuere funksjonen på nettstedet, MOSS klaget over en "FileNotFoundException" feil. Dette blogginnlegget beskriver hvordan jeg løste det.

Dette er feilen som MOSS viste meg i web-leseren:

Funksjonen ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ kunne ikke installeres fordi innlasting av hendelsen mottaker montering "xyzzyFeatureReceiver_0" mislyktes: System.io.FileNotFoundException: Kunne ikke laste fil eller montering ' xyzzyFeatureReceiver_0’ eller en av dens avhengigheter. Systemet finner ikke den angitte filen.
Filnavn: ' xyzzyFeatureReceiver_0’
ved System.Reflection.Assembly.nLoad(AssemblyName filnavn, Streng kodebase, Bevis assemblySecurity, Montering locationHint, StackCrawlMark& stackMark, Boolsk throwOnFileNotFound, Boolsk forIntrospection)
ved System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Bevis assemblySecurity, StackCrawlMark& stackMark, Boolsk forIntrospection)
ved System.Reflection.Assembly.InternalLoad(Streng assemblyString, Bevis assemblySecurity, StackCrawlMark& stackMark, Boolsk forIntrospection)
ved System.Reflection.Assembly.Load(Streng assemblyString)
ved Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
ADV: Montering binding: Sporlogging er slått av.
Hvis du vil aktivere logging av mislykket samlingsbinding, Angi registerverdien [HKLMSoftwareMicrosoftFusion!EnableLog] (DWORD) til 1.
Note: Det er noen innvirkning på ytelsen med logging av mislykket samlingsbinding.
Hvis du vil deaktivere denne funksjonen, fjerne registerverdien [HKLMSoftwareMicrosoftFusion!EnableLog].

Feilsøke problemer med Windows SharePoint Services.

Jeg vite hvor å bevisst føre til denne feilen: ikke installere samlingen i GAC. men, Det var i GAC. Jeg installere normalt samlinger i GAC ved å dra dem inn i c:\windowsassembly-mappen i windows Utforsker. Jeg har aldri følt 100% komfortabel med det fordi jeg har alltid trodd at gacutil eksisterte for en grunn … så jeg forsøkt det. Den fremstilt nei differansen.

Jeg søkte Internets og fant dette innlegget: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1

Plakaten skjedd å bruke den samme rot-bit av koden (fra boken I WSS fra denne listen) så det var et tegn på håp. Men, forslag fra dekorere samlingen med en [Montering: ] direktivet fornuftig ikke for meg. Jeg forsøkt den likevel og jeg hadde rett. Den fremstilt nei differansen.

Så la jeg merke til at min klassedefinisjonen ikke var offentlig. Jeg gjorde det offentlig og som gjorde ingen forskjell.

Neste, Jeg dro til problemer med å aktivere "samlingen binde feil loggen" (etter nyttig og korrekt instruksjonene gitt) og dette er hvor ting begynte å bli interessant. Loggen viser meg at kjøretiden søker overalt på serveren for min samling. Det ser ut til å være søker etter den i min medisinskapet. men … det vil ikke søke etter den i GAC.

Jeg satte på min vinterjakke og lete Internets igjen og finne at noen hadde dette problemet også. Lengre diskusjon i dette oppslaget peters av til ingenting og jeg kan ikke finne en løsning.

Jeg flytter min samling i et av stedene loggen hevder den søker og jeg gjør litt mer fremgang. Jeg er belønnet med en ny feil i nettleseren når jeg prøver å aktivere funksjonen:

Kan ikke opprette funksjonen mottaker objekt fra samlingen "xyzzyFeatureReceiver_0", Skriv inn "Conchango.xyzzyFeatureReceiver" for funksjonen b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: System.ArgumentNullException: Verdien kan ikke være null.
Parameternavn: type
ved System.Activator.CreateInstance(Type-typen, Boolsk ulovlig utnytter konfidensiell)
ved System.Activator.CreateInstance(Type-typen)
ved Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

Feilsøke problemer med Windows SharePoint Services.

Tid for en siste tur til Internets!

Denne gangen jeg finne ut, predictably nok, at MOSS problemer denne feilen fordi samlingen ikke er i GAC.

Jeg ønsker å få noe positivt ut av dette og prøve å føle litt stolte av at jeg har opprettet den Jaget av MSIL-samlinger, men det virker ikke. Jeg er bare ren irritert. Jeg finner meg selv mumler "høna eller egget" under min pusten.

Jeg endelig bestemmer å punt. Jeg opprette et helt nytt prosjekt og lime inn koden fra incredible-cloaked-from-the-GAC-assembly ikke fungerer prosjektet over dette nye prosjektet. (Jeg ser etter en bygge flagg som heter noe sånt som "Skjul fra samlingen binding hvis installert i GAC" men ikke kan finne en).

Jeg installere funksjonen og aktivere den og … det fungerer! Så, etter alle som, Jeg måtte utgangspunktet ' gjenstarte’ mitt prosjekt. Dette er en annen grunn til at jeg hater datamaskiner.

Jeg lærte noe nyttig fra dette. Jeg hadde vært å installere funksjoner ved hjelp av stsadm-kommandolinjen hele dagen og brukt den "-force" alternativ for vane. For noen grunn, Jeg brukte ikke-tvang når jeg installerte det nye prosjektet. denne gangen, Jeg gjorde faktisk, virkelig glemme kopiere dette nye prosjektet samlingen i GAC. Som et resultat, Jeg mottatt "FielNotFoundException" feil. denne gangen, Jeg fikk den fra stsadm, ikke når jeg forsøkt å aktivere funksjonen via nettleseren. Så, -Force faktisk spiller to roller. Det tillater deg å re-installere en eksisterende funksjon. Det også lar deg installere en buggy funksjon som ikke fungerer under kjøring ved å undertrykke feilen. Står sannsynligvis så mye hjelp et sted, men jeg lagt merke til aldri det.

</slutten>

Technorati Merkelapper: ,

3 tanker om “Løsningen på problemet: “FileNotFoundException” Med min funksjonen-mottaker.

  1. Francisco

    Også, Jeg hadde min 2 timer av hysteric nintendoSIXTYFOURRRR-i-en-dårlig-veis øyeblikk når jeg omdøpt Namespace på funksjonsmottakeren, å spore hvor din egen eller andres begynte.

    Svar
  2. Francisco

    Roten av problemet ligger i det distribuert wsp i sharepoint-databasen. Jeg leste innlegget ditt, og mens det faktisk løse problemet vi har en stor løsning med flere prosjekter og dusinvis av filer så flytte alt var ikke et alternativ.

    Uansett hvor mye oppdatere du din GAC eller din montering, hva gir deg problemer er samlingen i den gjeldende WSP installert på sharepoint.

    Du kan enkelt merke som ved å prøve å bare kalle tilbake løsningen (som er der feilen hender). Alt skjer på "trekke tid" anses som "deployert wsp"-bare ikke selve prosjektet.

    Min løsning var:

    – Sentraladministrasjon: Avbryte løsning
    – Stsadm: deletesolution
    – Visual Studio => Project => Pakke
    – Stsadm: addsolution-fil ProjectbinDebugProject.wsp
    – Stsadm: deploysolution-navnet project.wsp-umiddelbar - allowgacdeployment-force
    – Visual Studio => Distribuere

    Jeg har også slettet bin og debug mapper fra prosjektet før du kjører distribuere igjen, kan ikke ha noen effekt, men verdt å kommentere.

    Dette fungerer for både

    "Ansiktstrekk … kunne ikke installeres fordi innlasting av hendelsesmottakersamlingen"
    og
    "Kan ikke opprette funksjonen mottaker objektet fra samlingen"

    takk!
    Francisco

    Svar
  3. Tom Clarkson

    Tilbrakte et par timer prøver å fastsette denne likt utsendelse og fant en bedre løsning enn bare gjenskape prosjektet.

    Det viste seg at for noen grunn Visual Studio hadde satt bygge målet for x 86 i stedet for x 64- eller MSIL – samlingen var i GAC, bare ikke samme GAC som 64 bit SharePoint søkte.

    Svar

legg igjen et svar

e-postadressen din vil ikke offentliggjøres. Obligatoriske felt er merket *