Se lo strumento sta facendo cose che non capisci e quindi non riesce a passo n di un numero sconosciuto di passaggi, You're dead in the water…
</fine>
Se lo strumento sta facendo cose che non capisci e quindi non riesce a passo n di un numero sconosciuto di passaggi, You're dead in the water…
</fine>
Ancora una volta stavo crafting file ADF BDC a mano (così che io posso costruire il mio "scendere il mio prato!" cred) e ha colpito questo errore bello:
"Importazione di definizione di applicazione non riuscita. Si è verificato il seguente errore:"
Come si può vedere, c'è un errore, ma … non è intenzione di dirmi che cosa è.
Nel mio caso, il problema si è rivelato che avevo cominciato con un ADF funzionali per un progetto diverso che connesso a un database ed eseguito una query SQL su una vista. In questo nuovo progetto, Sto chiamando un metodo su un servizio web. Avevo messo a nudo le cose specifiche di DB e aggiunto la mia roba di servizio web, ma non è riuscito ad aggiornare il <LobSystem>di attributo type. Passato a "WebService" e sono felicemente passato ad errori di importazione più recente e più emozionante, che sono stati gestiti a tempo debito.
Ecco il LobSystem sbagliato:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "Database"
Versione = "1.0.0.0" Nome = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
Questo è corretto:
<LobSystem
xmlns:xsi =http://www.w3.org/2001/XMLSchema-instance
xsi:schemaLocation =http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalogBDCMetadata.xsd
Tipo = "WebService"
Versione = "1.0.0.0" Nome = "xyzzy"
xmlns ="http://schemas.Microsoft.com/Office/2006/03/BusinessDataCatalog">
</fine>
AGGIORNAMENTO: Questo distacco di MSDN ha alcune interessanti osservazioni da JXJ basato sul suo, negative, esperienze andando su questa strada: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2623565&SiteID=1
Abbiamo uno scenario di business dove dobbiamo collegare due librerie di documenti tramite una comune "documento ID" Campo.
Spesso usiamo una colonna di ricerca ai collegamenti implements like this.. Ci sono diversi inconvenienti a colonne di ricerca, tre dei quali sono:
Sostenuta da BDC, possiamo usare un dati di business"" tipo di colonna e si fornisce una ricerca superiore e permette anche più colonne di dati vengono visualizzati nelle visualizzazioni elenco.
Ho avuto qualche successo preliminare con questo approccio e prevede di scrivere di più su di esso.
Se hai lavorato questo angolo prima e avere eventuali commenti, si prega di condividere!
</fine>
Ho lavorato con BDC oggi, codifica i file ADF a mano e alcuni errori di generazione me stesso. Un tale errore:
Importazione di definizione di applicazione non riuscita. Si è verificato il seguente errore: Impossibile caricare il tipo descritto dal TypeName del TypeDescriptor. Nome del parametro: typeName errore è stata rilevata appena prima linea: 35’ e posizione: '20'.
MOSS visualizzato questo errore quando ho provato a importare il file XML ADF.
Ricercato Internets e trovato che io stavo riferimento al nome di istanza LOB (dal <LobSystemInstance>) nel mio <TypeDescriptor> nodo quando dovrei avere fatto riferimento il nome LOB stesso (Da <LobSystem>).
Sbagliato:
<TypeDescriptor TypeName="Conchango.KeyValue, Nome istanza di pallonetto" Nome = "KeyValue">
Correggere:
<TypeDescriptor TypeName="Conchango.KeyValue, Nome LOB" Nome = "KeyValue">
Spero che questo qualcuno salva un'ora o due di tempo.
</fine>
Stavo lavorando su una caratteristica la scorsa settimana che vorrei aggiungere alcuni ricevitori di eventi a un'istanza di elenco specifico. (Ho bloggato un po' su quel ricevitore elenco qui).
Utilizzando la riga di comando, Potuto installare la funzionalità con nessun errore (ma vedi sotto per l'errore nascosto). Quando ho provato a distribuire la funzionalità sul sito, MOSS si è lamentato di "FileNotFoundException" errore. Questo blog descrive come ho risolto.
Questo è l'errore che MOSS mi ha mostrato nel browser web:
Funzione ' b2cb42e3-4f0a-4380-aaba-1ef9cd526f20’ potrebbe non essere installato perché il caricamento di assembly del ricevitore di eventi "xyzzyFeatureReceiver_0" non riuscita: System.io.FileNotFoundException: Impossibile caricare il file o l'assembly ' xyzzyFeatureReceiver_0’ o una delle relative dipendenze. Il sistema non riesce a trovare il file specificato.
Nome del file: ' xyzzyFeatureReceiver_0’
presso System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Prove assemblySecurity, Assemblea locationHint, StackCrawlMark& stackMark, ThrowOnFileNotFound booleano, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyRef AssemblyName, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
presso System.Reflection.Assembly.InternalLoad(AssemblyString stringa, Prove assemblySecurity, StackCrawlMark& stackMark, ForIntrospection Boolean)
a Reflection(AssemblyString stringa)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
WRN: Assemblea associazione registrazione è attivata OFF.
Abilitare la registrazione di assembly legano fallimento, impostare il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog] (DWORD) A 1.
Nota: C'è qualche penalizzazione delle prestazioni associati alla registrazione di guasto legano assieme.
Per disattivare questa funzionalità, rimuovere il valore del registro di sistema [HKLMSoftwareMicrosoftFusion.!EnableLog].
Saper provocare deliberatamente quell'errore: non installare l'assembly nella global assembly cache. Ma, era nella GAC. Normalmente installare assembly nella GAC trascinandoli nella c:\WINDOWSassembly cartella utilizzando Esplora risorse di windows. Non ho mai sentito 100% comodo che fare perché ho sempre pensato che gacutil esistito per un motivo … così ho provato che. Non faceva alcuna differenza.
Ho cercato il Internets e trovato questo post: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2243677&SiteID=1
Il poster è capitato di usare lo stesso pezzo di radice di codice (dal libro all'interno di WSS da questo elenco) così che era un segno di speranza. Tuttavia, il suggerimento di decorare l'assembly con un [Assemblea: ] direttiva non ha senso per me. Ho provato comunque e non mi sbagliavo. Non faceva alcuna differenza.
Poi ho notato che la mia definizione di classe non era pubblico. Reso pubblico e che non faceva alcuna differenza.
Successivo, Sono andato alla difficoltà di abilitazione "Assemblea associazione fallimento log" (seguendo le istruzioni utili e precise fornite) e questo è dove le cose hanno cominciato a farsi interessanti. Tale log mi mostra che il runtime sta cercando ovunque su tale server per la mia Assemblea. Sembra anche essere alla ricerca di essa nel mio armadietto dei medicinali. Ma … esso non cercarlo nella GAC.
Ho messo sulla mia giacca invernale e andare alla ricerca di Internets nuovamente e scoprire che qualcuno ha avuto questo problema troppo. La lunga discussione in tale registrazione peters fuori nel nulla e non riesco a trovare una soluzione.
Mi muovo la mia Assemblea in uno dei posti che nel registro reclami sta cercando e fare un po' più progressi. Io sono ricompensato con un nuovo errore nel browser quando tento di attivare la funzionalità:
Impossibile creare l'oggetto ricevitore caratteristica dal gruppo "xyzzyFeatureReceiver_0", tipo "Conchango.xyzzyFeatureReceiver" per la funzione b2cb42e3-4f0a-4380-aaba-1ef9cd526f20: ArgumentNullException: Valore non può essere null.
Nome del parametro: tipo
corrispondenza System.Activator.CreateInstance(Tipo tipo, NonPublic booleano)
corrispondenza System.Activator.CreateInstance(Tipo tipo)
presso Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()
Tempo per un ultimo viaggio a Internets!
Questa volta scopro, abbastanza prevedibile, quel muschio genera questo errore perché l'assembly non è nella global assembly cache.
Voglio ottenere qualcosa di positivo da questo e provare a sentire un po' orgogliosa che ho creato il Fuggitivo di assembly MSIL, ma non funziona. Io sono semplicemente infastidito. Mi trovo a borbottando "uovo o la gallina" sotto il mio respiro.
Ho finalmente deciso a punt. Creare un progetto completamente nuovo e copia/incolla il codice dal progetto non funzionante incredible-cloaked-from-the-GAC-assembly sopra a questo nuovo progetto. (Cercare un flag di compilazione chiamato qualcosa come "Nascondi da associazione se installato nella Global Assembly Cache assembly" ma non riesce a trovare uno).
Installare la funzionalità e attivarlo e … funziona! Così, Dopo tutto ciò che, Ho dovuto fondamentalmente ' riavviare’ il mio progetto. Questo è un altro motivo perche ' odio il computer.
Ho imparato qualcosa di utile da questo. Ero stato l'installazione di funzionalità utilizzando la riga di comando stsadm tutto il giorno e state usando il "-forza" opzione per abitudine. Per qualche motivo, Non ho usato il - opzione force quando ho installato il nuovo progetto. Stavolta, In realtà ho fatto, veramente dimenticare copiare assembly di questo nuovo progetto nella GAC. Di conseguenza, Ho ricevuto quel FielNotFoundException"" errore. Stavolta, Ho preso da stsadm, non quando ho cercato di attivare la funzione tramite il browser web. Così, -forza in realtà svolge due ruoli. Esso consente di re-installare una funzionalità esistente. Inoltre consente di installare una funzionalità buggy che non può funzionare in fase di esecuzione di eliminazione dell'errore. Probabilmente dice tanto nella guida da qualche parte ma non ho mai notato.
</fine>
===
Scherzo moglie bonus:
Due colleghi di lavoro maschi andare a pranzo. Uno di loro dice l'altro, "Lasciato liberamente un imbarazzante lapsus freudiano l'altra sera."
"Un lapsus freudiano? Cos'è?"
"Bene, Quando abbiamo finito di mangiare, la cameriera si avvicinò e chiese come abbiamo apprezzato i pasti. Intendevo dire, ' Mi è piaciuto molto il petto di pollo’ ma invece ho detto 'Mi è piaciuto molto il tuo seno'. Ero così imbarazzato."
"Ah," suo collaboratore ha risposto. "Ho avuto la stessa cosa accada a me questo fine settimana con mia moglie. Abbiamo mangiato colazione che volevo chiederle di passare il burro, ma invece ho urlato a lei, ' Hai rovinato la mia vita!’"
</fine>
AGGIORNAMENTO (04/08/08): Mi sembra di aver risolto questo problema. Dalla riga di comando, Mi sono imbattuto "c:\windowssystem32lodctr/r" secondo una voce parlando di InstallShield problemi e che sembra avere risolto per me.
Ho notato che ultimamente, il mio ventilatore di server e desktop mai si spegne. So che ha usato per spegnere. Ho preso un momento per controllare fuori notato che l'un processo di VMware è stato in esecuzione un coerente 20% utilizzo su uno della CPU. Ho controllato il registro eventi e visto questi errori nel registro dell'applicazione accadendo decine di volte al minuto:
Windows non può caricare il contatore flessibile DLL UGatherer, il primo DWORD nella sezione dati è il codice di errore di Windows.
Windows non può caricare il contatore flessibile DLL UGTHRSVC, il primo DWORD nella sezione dati è il codice di errore di Windows.
Impossibile caricare DLL MSSCNTRS contatore flessibile, il primo DWORD nella sezione dati è il codice di errore di Windows.
Se io forare i dettagli di uno di quei messaggi, Ottengo questo:
Fonte: Perflib
Tipo: Errore
Categoria: Nessuno
ID evento 1023
Ho fatto qualche ricerca e c'era qualche indicazione che potrebbe essere un problema di autorizzazione in materia di accesso alle DLL in questione. Ho suonato in giro con quella roba, ma non avrebbe potuto modificare le cose in modo positivo, così rinunciato a questo.
VMware ha avuto stato fastidioso per me sull'esecuzione di un aggiornamento per parecchio tempo, così buttato giù la versione che avevo installato (a quanto pare "1.0.1 costruire 29996") e fatto l'aggiornamento. Questo mi ha aggiornato alla versione v 1.04. Purtroppo, essa non ha risolto il problema.
Posso fermare il pazzo numero di messaggi andando al mio registro applicazione se chiudo un servizio denominato "Servizio di autorizzazione di VMware". Questo mi impedisce di utilizzando il software VMware, così … non una grande opzione.
Il sistema operativo host è Windows XP 64 bit.
Non credo che questo è sempre successo, ma non ricordo alcun evento particolare che potrebbe avere portato ad esso.
Ecco perché odio il computer.
</fine>
AGGIORNAMENTO: Questo funziona, ma non ci sono limitazioni significative che sono descritti nei commenti. Questo può ancora essere utile in alcuni cirumstances.
AGGIORNAMENTO 2: Nel mio progetto attuale, Gli utenti sempre caricare documenti. Di conseguenza, Io non incorrere in un problema dove MS Word è in esecuzione e pensa che il file è stato rinominato su di esso. Ho incontrato un problema, "il file è stato modificato da qualcun altro" e risolto il problema tramite un flag di tipo semplice semaforo. Gli utenti devono modificare un campo dati meta dal valore predefinito a qualcos'altro. Il itemupdated() ricevitore in cerca di un valore valido lì prima di eseguire effettivamente la rinomina e da allora, Non ho avuto alcun problema. Il chilometraggio può variare.
Ho un requisito di cliente di cambiare il nome del file caricato in una raccolta di documenti specifici per la conformità con una convenzione di denominazione particolare. L'API fornisce una "Rinomina()" Metodo.. Invece, usiamo "MoveTo(…)". Qui è un po' minimal di codice per eseguire questa operazione:
pubblica eseguire l'override void ItemAdded(SPItemEventProperties Proprietà) { SPFile f = proprietα.ListItem.File; f.MoveTo(Proprietà.ListItem.ParentList.RootFolder.Url + "/xyzzy.doc"); f.Update(); } |
Solo la parte difficile è la "proprietà. ListItem.ParentList.RootFolder.Url". Il MoveTo() Metodo richiede un URL. Che purè punti stringa me nella cartella principale della mia libreria del documento corrente. Questo mi permette di evitare qualsiasi hard coded in mio ricevitore di eventi.
Questa è una versione più utile che fa la stessa cosa, ma assegna il nome del file per il "Titolo":
pubblica eseguire l'override void ItemAdded(SPItemEventProperties Proprietà) { DisableEventFiring(); // Assegnare il titolo di quest'elemento sul nome del file stesso. // NOTA: Questa assegnazione deve avvenire prima che vogliamo modificare il file stesso. // La chiamata di aggiornamento() la SPFile sembra invalidare le proprietà in // certo senso. Aggiornamenti "Title" non è riuscito fino a che cambia (e l'aggiornamento() chiamare) // sono state spostate di fronte la modifica il nome del file. Proprietà.ListItem["Title"] = proprietα.ListItem.File.Name; Proprietà.ListItem.Update(); SPFile f = proprietα.ListItem.File; // Ottenere l'estensione del file. Abbiamo bisogno che più tardi. stringa spfileExt = Nuovo FileInfo(f. Name).Estensione; // Rinominare il file ID dell'elemento di elenco e utilizzare l'estensione del file per mantenere // quella parte di esso intatto. f.MoveTo(Proprietà.ListItem.ParentList.RootFolder.Url + "/" + Proprietà.ListItem["ID"] + spfileExt); // La mossa di commettere. f.Update(); EnableEventFiring(); } |
Un collega, "Mark", ha avviato una discussione newsgroup potenzialmente interessante incentrato sulla "Governance di SharePoint eccellente dall'inizio di stabilire" per un 35,000 ambiente utente.
La discussione è qui: http://groups.google.com/group/microsoft.public.sharepoint.portalserver/browse_thread/thread/6d9a738d981af772/1c390b15c5407db6?#1c390b15c5407db6
Al pop sopra e contribuire!
</fine>
Ho ancora l'abitudine di crafting i miei file funzionalità XML a mano, dal momento che è tutto abbastanza nuovo per me. Non voglio fare affidamento su uno strumento front-end quella roba fa che non capisco (ha detto come ha scritto un post di blog utilizzando uno strumento che non capisce).
Oggi, Stavo tentando di aggiungere un'azione personalizzata per le impostazioni del sito, ma basta non presentarsi. Ho potuto installare la funzionalità e vederlo nelle caratteristiche del sito, ma quando l'ho attivato (senza errore) esso semplicemente non compare nel menu a discesa.
Ho finalmente capito che scritto male "SharePoint" nell'attributo di posizione il <CustomAction> nodo. Questo è il file bad Elements.:
<?XML Versione="1.0" codifica="UTF-8" ?> <Elementi xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolbar" GroupId="SiteActions" Posizione="Microsoft.Sharepoint.StandardMenu" Sequenza="100" Titolo="Ciao!" Descrizione="Azione menu personalizzati aggiunti tramite una caratteristica." ImageUrl="_layouts/images/menuprofile.gif"> <UrlAction URL="http://www.xyzzy.com"/> </CustomAction> </Elementi> |
Buona:
<?XML Versione="1.0" codifica="UTF-8" ?> <Elementi xmlns="http://schemas.Microsoft.com/SharePoint/"> <CustomAction ID="SiteActionsToolBar" GroupId="SiteActions" Posizione="Microsoft.SharePoint.StandardMenu" Sequenza="100" Titolo="Ciao!" Descrizione="Azione menu personalizzati aggiunti tramite una caratteristica." > <UrlAction URL="http://www.xyzzy.com"/> </CustomAction> </Elementi> |
Mi ci sono volute due ore buone per capirlo 🙂
Prendo conforto nel fatto che qualche giorno in futuro, Sarò in grado di dire con convinzione, "back in the day, Ho dovuto camminare tre miglia salita nella neve (a piedi nudi!) al fine di distribuire una funzionalità personalizzata in MOSS. Voi ragazzi, non sai quanto sia facile lo avete! Scendere il mio prato!"
Non vedo l'ora.
</fine>