Hvis verktøyet gjør ting du ikke forstår, og deretter det mislykkes i trinn n av et ukjent antall trinn, du er død i vannet…
</slutten>
Hvis verktøyet gjør ting du ikke forstår, og deretter det mislykkes i trinn n av et ukjent antall trinn, du er død i vannet…
</slutten>
Jeg ble igjen laging BDC-ADF-filer for hånd (slik at jeg kan bygge opp min "gå av min plen!" cred) og traff denne fin feilen:
"Import av programdefinisjon mislyktes. Følgende feil oppstod:"
Som du kan se, Det er en feil, men … Det er ikke til å fortelle meg hva det er.
I mitt tilfelle, problemet viste seg at jeg hadde startet med en funksjonell ADF for et annet prosjekt som er koblet til en database og utføres en SQL-spørring mot en visning. I dette nye prosjektet, Jeg kaller en metode på en webtjeneste. Jeg hadde fjernet DB bestemte ting og lagt min web service ting, men du kan ikke oppdatere den <LobSystem>'s Typeattributtet. Jeg byttet den til "WebService" og jeg lykkelig flyttet til nyere og mer spennende Importfeil, som ble håndtert i forfallsdato course.
Her er feil LobSystem:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Type = "Database"
Versjon = "1.0.0.0" Name = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
Dette er riktig:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Type = "WebService"
Versjon = "1.0.0.0" Name = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
</slutten>
OPPDATERINGEN: Dette oppslaget MSDN har noen interessante observasjoner fra JXJ basert på hans, hovedsakelig negativ, erfaringer går ned denne banen: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1
Vi har et scenario der vi trenger å koble to dokumenter biblioteker via en felles "dokument-ID" feltet.
Vi bruker ofte en oppslagskolonne implementerer koblinger som dette. Det er flere ulemper til oppslagskolonner, tre hvorav:
Støttet av BDC, Vi kan bruke "-forretningsdata" kolonnetype og det gir en overlegen søk og lar flere kolonner med data vises i listevisninger.
Jeg har hatt noen foreløpige suksess med denne tilnærmingen, og har tenkt å skrive mer om det.
Hvis du har jobbet denne vinkelen før, og har noen kommentarer, Vær dele!
</slutten>
Jeg har jobbet med BDC i dag, koding ADF filer for hånd og generere meg noen feil. En slik feil:
Programmet definisjon importen var mislykket. Følgende feil oppstod: Kan ikke laste inn typen beskrevet av Typedescriptor's TypeName. Parameternavn: typeName feil oppstod ved eller like før linje: ' 35’ og posisjon: "20".
MOSS vises denne feil når jeg prøvde å importere-ADF-XML-filen.
Jeg forsket på Internets og funnet at jeg var refererer til LOB-forekomstnavn (fra den <LobSystemInstance>) i min <TypeDescriptor> node når bør jeg har referert til LOB-navnet selv (fra <LobSystem>).
Feil:
<TypeDescriptor TypeName="Conchango.KeyValue, LOB-forekomstnavn" Name = "KeyValue">
Korrigere:
<TypeDescriptor TypeName="Conchango.KeyValue, LOB-navn" Name = "KeyValue">
Håpe dette sparer noen en time eller to av tid.
</slutten>
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].
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()
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>
===
Bonus kone spøk:
To mannlige kolleger gå ut til lunsj. En av dem forteller den andre, "Jeg fortelle løs en pinlig Freudian slip den andre natten."
"En Freudian slip? hva er det?"
"Vel, Når vi er ferdig å spise, Servitrisen kom og spurte hvordan vi likte våre måltider. Jeg mente si, ' Jeg elsket kyllingbryst’ men i stedet jeg sa "Jeg elsket brystene". Jeg var så flau."
"Ah," hans kollega svarte. "Jeg hadde det samme skje med meg denne helgen med min kone. Vi spiste frokost jeg mente å be henne om å pass på smør, men i stedet jeg screamed på henne, ' Du ødelagt mitt liv!’"
</slutten>
OPPDATERINGEN (04/08/08): Jeg synes å ha løst problemet. Fra kommandolinjen, Jeg kjørte "c:\windowssystem32lodctr /R" i henhold til en oppføring som snakker om InstallShield ser problemer og som ut til å ha løst den for meg.
Jeg har lagt merke til som det siste, min desktop/server fan aldri slås av. Jeg vet det pleide å slå av. Jeg tok en stund å sjekke det ut merket at det en VMware prosess kjører en konsistent 20% Bruk en av CPU. Jeg sjekket hendelsesloggen og så disse feilene i programloggen skjer dusinvis av ganger i minuttet:
Windows kan ikke laste inn utvidbare teller-DLL for UGatherer, det første DWORD i data-avsnittet er Windows-feilkode.
Windows kan ikke laste inn utvidbare teller-DLL for UGTHRSVC, det første DWORD i data-avsnittet er Windows-feilkode.
Windows kan ikke laste inn utvidbare teller-DLL for MSSCNTRS, det første DWORD i data-avsnittet er Windows-feilkode.
Hvis jeg bore inn detaljene for en av disse meldingene, Jeg får dette:
Kilde: Perflib
Type: Feil
Kategori: Ingen
Hendelses-ID 1023
Jeg gjorde noen undersøkelser og det var noen indikasjon på det kan være en tillatelsesproblem i form av tilgang til DLL-filene i. Jeg spilte rundt med det der, men kan ikke påvirke ting på en positiv måte så jeg ga opp på det.
VMware hadde vært mas meg om hvordan du utfører en oppdatering for en stund, så jeg jotted ned versjonen hadde jeg installert (Angivelig bygge"1.0.1 29996") og gjorde oppdateringen. Dette oppgradert meg til v1.04. Dessverre, den løste ikke problemet.
Jeg kan stoppe vanvittig antall meldinger skal min programloggen hvis jeg nedlegge en service benevnt "VMware godkjenning Service". Dette hindrer meg i ved hjelp av VMware-programvare, slik … ikke slik et flott alternativ.
Vertsoperativsystemet er Windows XP 64 bit.
Jeg tror ikke dette alltid har skjedd, men jeg kan ikke huske en bestemt hendelse som kunne ha ført til det.
Dette er grunnen til at jeg hater datamaskiner.
</slutten>
OPPDATERINGEN: Dette fungerer, men det er betydelige begrensninger som er beskrevet i kommentarer. Dette kan være nyttig i noen cirumstances.
OPPDATERINGEN 2: I min nåværende prosjekt, brukere alltid laste opp dokumenter. Som et resultat, Jeg kjøre ikke inn i et problem der MS Word kjører og tenker at filen ble endret på den. Jeg gjorde kjøre inn et problem, "filen ble endret av noen andre" og løste dette via en enkel semafor typen flagg. Brukernes nød å endre meta datafelt fra standardverdien til noe annet. Itemupdated() mottakeren ser etter en gyldig verdi før du faktisk gjennomfører navneendringen og siden da, Jeg har ikke hatt noen problemer. Ditt kjørelengde kan variere.
Jeg har en klient krav om å endre navn på filer lastet opp til et bestemt dokumentbibliotek til å samsvare med en bestemt navnekonvensjon. APIEN gir ikke en "navneendring()" metoden. I stedet, Vi bruker "Flytt(…)". Her er litt minimal av kode for å oppnå dette:
offentlig overstyre ugyldige ItemAdded(SPItemEventProperties Egenskaper) { SPFile f = egenskaper.ListItem.File; f.MoveTo(Egenskaper.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Det bare vanskelig bit er egenskapene. ListItem.ParentList.RootFolder.Url". MoveTo() metoden krever en URL. Som Moses opp peker meg til rotmappen av dokumentbiblioteket for gjeldende. Dette tillater meg å unngå noen harde koding i min hendelsesmottaker.
Dette er en mer nyttig versjon som gjør samme, men tilordner navnet på filen til "Tittel":
offentlig overstyre ugyldige ItemAdded(SPItemEventProperties Egenskaper) { DisableEventFiring(); // Tilordne tittelen på dette elementet til navnet på selve filen. // NOTE: Tildelingen må finne sted før vi endre selve filen. // Ringer oppdateringen() på SPFile synes å oppheve egenskapene i // noen følelse. Oppdateringer til "tittel" mislyktes til som endrer (og oppdatere() kalle) // ble flyttet foran endringen i filnavnet. Egenskaper.ListItem["Tittel"] = Egenskaper.ListItem.File.Name; Egenskaper.ListItem.Update(); SPFile f = egenskaper.ListItem.File; // Få forlengelse av filen. Vi trenger som senere. streng spfileExt = nye FileInfo(f.name).Filtypen; // Endre filnavnet til den listeelement-ID, og bruk filtypen til å holde // som del av den intakt. f.MoveTo(Egenskaper.ListItem.ParentList.RootFolder.Url + "/" + Egenskaper.ListItem["ID"] + spfileExt); // Forplikte farten. f.Update(); EnableEventFiring(); } |
Fellow, "Mark", har startet opp en potensielt interessant nyhetsgruppe diskusjon fokus på "å etablere utmerket SharePoint-styring fra starten" for en 35,000 brukermiljø.
Diskusjonen er her: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6
Pop på over og bidra!
</slutten>
Jeg er fortsatt i for vane å lage min funksjonen XML-filer for hånd siden det er alt nytt for meg. Jeg ønsker ikke å stole på et front-end verktøy som gjør ting jeg ikke forstår (sa han som han skrev en bloggoppføring ved hjelp av et verktøy som han ikke forstår).
I dag, Jeg prøvde å legge til en egendefinert handling til siden Innstillinger, men det bare ikke ville vise. Jeg kunne installere funksjonen og se den i området tilbyr, men når jeg aktivert det (uten feil) det ikke ville bare viser på miste-ned meny.
Jeg har omsider innsett at jeg feilstavet "SharePoint" i plassering-attributtet for den <CustomAction> noden. Dette er filen dårlig elements.xml:
<?XML versjon="1.0" koding="UTF-8" ?> <Elementer xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolbar" GroupId="SiteActions" Plassering="Microsoft.SharePoint.StandardMenu" Sekvens="100" Tittel="hallo!" Beskrivelse="Egendefinert meny handling lagt til via en funksjon." ImageUrl="_layouts/Images/menuprofile.gif"> <URL-handlingspolicyen URL-adresse="http://www.xyzzy.com"/> </CustomAction> </Elementer> |
bra:
<?XML versjon="1.0" koding="UTF-8" ?> <Elementer xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolBar" GroupId="SiteActions" Plassering="Microsoft.SharePoint.StandardMenu" Sekvens="100" Tittel="hallo!" Beskrivelse="Egendefinert meny handling lagt til via en funksjon." > <URL-handlingspolicyen URL-adresse="http://www.xyzzy.com"/> </CustomAction> </Elementer> |
That one took me a good two hours to figure out 🙂
Jeg ta solace i faktum at en dag i fremtiden, Jeg vil kunne si med overbevisning, "tilbake i dag, Jeg måtte gå tre miles opp bakken i snøen (Barefoot!) for å distribuere en egendefinert funksjon til MOSS. Du barna, du vet ikke hvor enkelt du har! Få min plen!"
Kan ikke vente.
</slutten>