Domanda

Provo a creare un'istanza di SPSite sul server della farm in un processo personalizzato (MyApp.exe) e fornisco come parametro l'intero URI ( http: // mysite: 80 / ). Mi sono anche assicurato che l'account che esegue MyApp.exe sia amministratore della raccolta siti .

Tuttavia, non posso creare un'istanza di SPSite qualunque cosa stia cercando di fare. Genera sempre un FileNotFoundException .

Qualcuno ha avuto un'idea?

StackTrace:

  

a   Microsoft.SharePoint.SPSite..ctor (SPFarm   farm, Uri requestUri, Boolean   contextSite, SPUserToken userToken)
  a   Microsoft.SharePoint.SPSite..ctor (String   requestUrl) a   MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (SharePointItem   oggetto) in   C: \ aree di lavoro \ MyCompanyName \ Sviluppo \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: linea   555

Un'altra nota a margine ... Ho un'applicazione Web + Raccolta siti a cui posso accedere senza problemi tramite il browser.

È stato utile?

Soluzione

FileNotFoundException viene generato da SharePoint quando non riesce a trovare la raccolta siti richiesta nel database di configurazione di SharePoint. Suppongo che tu non abbia ancora creato una raccolta siti sull'URL http: // mysite: 80 . Vedo la seguente traccia dello stack se provo a creare un'istanza di un nuovo oggetto SPSite con l'URL di una raccolta siti inesistente:

System.IO.FileNotFoundException : The site http://server/sites/bah could not be found in the Web application SPWebApplication 
Name=SharePoint - 80 Parent=SPWebService.
at Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken)
at Microsoft.SharePoint.SPSite..ctor(String requestUrl)

Specifica l'URL corretto della tua raccolta siti o apri Amministrazione centrale e crea una nuova raccolta siti.

Altri suggerimenti

La modifica della destinazione della piattaforma nelle proprietà di build su x64 ha risolto questo problema per me su SharePoint 2010.

Leggi questo sito http://community.bamboosolutions.com/forums/t/ 8179.aspx se stai eseguendo il tuo sistema operativo x64 bit e stai usando MSTest (32 bit) non funzionerà, usa nunit funziona !!!

Se si tratta di un'applicazione console che accede a SharePoint 2010, assicurarsi che il Target di costruzione del progetto sia x64 e .NET Framework sia 3.5.

Questo problema riguarda maggiormente i permessi degli utenti, dare i seguenti permessi

Autorizzazione dell'utente Sito di SharePoint --- Autorizzazione di lettura minima

Server Sharepoint --- Aggiungi al gruppo WSS_ADMIN_WPG

Database --- Sharepoint Content DB (Database di raccolta siti) - autorizzazione db_owner                            DB di configurazione di Sharepoint (DB di configurazione dell'installazione di sharepoint) - - autorizzazione db_owner

Leggi di più sul mio blog

http://sharepointinstallation.blogspot.com/ 2010/12 / minimal-permission-necessario-a-execute.html

È anche possibile che al modello a oggetti non piaccia l'URL che gli stai fornendo. Se non fornisci l'URL esatto in cui hai creato la raccolta siti o un URL esatto elencato nel tuo è configurato nei Mapping di accesso alternativo, genererà un'eccezione che potrebbe non avere senso. Nel tuo caso potresti provare http: // mysite o http: // machinename .

Stacktrace dell'eccezione sarebbe utile.

Penso che possiate avere qualche idea di quale file sia e cosa sta accadendo disabilitando " solo il mio codice " negli strumenti - > opzioni - > eseguendo il debug e esaminando l'argomento nome file nello stack di chiamate dell'eccezione quando il debugger lo mostra (se è possibile eseguirne il debug ovviamente), o forse il nome viene visualizzato nel messaggio di eccezione.

Controlla il tuo web.config e vedi se c'è una configurazione lì con un file mancante.

Cerca in te 12 alveari per il registro. Se le impostazioni del registro sono corrette, il file non verrà visualizzato.

EDIT: controlla anche se TUTTA la tua DLL è nel GAC. Controlla se il tuo file web.config contiene tutte le informazioni: namespace, Classname, NameSpace, Version = version_number, Culture-your_culture, PublicKeyToken = your_signed_token

Di recente ho scoperto che questo problema con il costruttore può essere causato dal comportamento a stella del costruttore.
Sto prendendo MOSS 2007. Quando si trasmette un URL completo del sito al costruttore, ciò che sembra fare è considerare davvero solo la parte del sito dell'URL, scegliendo l'applicazione Web "attualmente selezionata" nel controllo del selettore dell'applicazione Web.
Pertanto, ad esempio, quando hai " http: // webapp / sites / site " e hai " http: // weabapp: 22345 " attualmente selezionato (l'ultima volta che lo hai selezionato in tale selettore) quando chiami

SPSite site = new SPSite("http://webapp/sites/site")

Tenta di creare effettivamente un oggetto sito per " http: // webapp: 22345 / sites / site " e fallisce.

Ho avuto lo stesso problema. Volevo eseguire l'applicazione console con il mio ID utente. Sono il proprietario dell'applicazione web + Farm Admin. Non è stato ancora possibile eseguire l'applicazione.

Il problema è stato risolto da

  1. Modifica della destinazione della piattaforma nelle proprietà della build in x64

  2. Nelle impostazioni del sito - > Utenti e autorizzazioni - > Gli amministratori della raccolta siti avevano due nomi. Rimosso altro nome e ha iniziato a funzionare.

Puoi mantenere il target di compilazione del progetto impostato su " Qualsiasi CPU " ;. L'importante è configurare il processo host MSTest per l'esecuzione a 64 bit. Apri il tuo file .testsettings, vai alla scheda Host e imposta " Esegui test a 64 bit ... "

Se dopo questo quando esegui i test VS ti dice che non ce ne sono, rimuovi e aggiungi nuovamente il tuo progetto di test (non conosco una soluzione alternativa per questo)

Spero che sia d'aiuto!

Abbiamo avuto lo stesso problema, ma ho familiarità con le diverse cause, ecco un riassunto:

  1. Potresti aver digitato male o altrimenti inserito l'indirizzo sbagliato
  2. L'account utente che esegue il processo non dispone delle autorizzazioni necessarie, che sono: Leggi autorizzazione per il sito di SharePoint e un dbo di SharePoint Config db e Content db.
  3. Il processo deve essere un processo a 64 bit (il valore predefinito è 64 bit "Qualsiasi CPU") quando si crea su un server a 64 bit.
  4. Il processo deve essere indirizzato a .NET 3.5

Ne sono stato afflitto poche settimane fa. Alla fine ho scoperto che il file che non è stato trovato era l'assemblaggio di SharePoint stesso. Il runtime non è riuscito a caricare l'assemblaggio satellite tramite associazione tardiva.

La soluzione al mio problema era registrare gli assembly di SharePoint 12.0.0.0 nel GAC. Non sembra lo stesso del tuo problema, ma solo FYI.

Alcuni giorni fa abbiamo riscontrato lo stesso problema e la soluzione era impostare l'applicazione, che sta tentando di creare l'oggetto de SPSite, per utilizzare lo stesso AppPool dell'applicazione Web di Sharepoint.

Spero che sia d'aiuto.

Il problema MSTest su x64 è stato la causa di questo problema per me. Funziona in un'app console.

Ho un tipo di problema simile.

Nel mio scenario, sono stato in grado di creare l'istanza di SPSite da un'applicazione console, ma quando un altro membro del team ha provato a farlo, l'applicazione ha lanciato la stessa eccezione di cui sopra.

Soluzione: ho aggiunto l'altro compagno di squadra come amministratore sulla casella del server Content Db (questo potrebbe non essere possibile per tutti), il codice funziona bene e nessun errore

Stesso problema su SharePoint 2010. Tuttavia, il problema riguardava il nostro servizio Web che stava accedendo al modello a oggetti di SharePoint. Il pool di app in cui deve essere eseguito questo servizio dovrebbe essere un amministratore della farm.

Il passaggio a NUnit potrebbe non essere un'opzione per tutti.
Nel mio caso, il problema era che ero su un server a 64 bit, avevo controllato Qualsiasi CPU (quindi stava selezionando la versione corretta) ma le mie impostazioni di test erano impostate su "Forza test per l'esecuzione in un processo a 32 bit" (GAH!)

In MSTest, vai a TEst- > Modifica impostazioni test- > Traccia e verifica impatto.
Scegli gli host.
Assicurati di eseguire la versione corretta. Ecco cosa dovresti scegliere

Ecco la mia lista di controllo per VS2010 SP1, MSTest.

  • È necessario SP1 in modo da poter indirizzare i test a .NET 3.5. Non funzionerà con .NET 4.0
  • Assicurati che il sito si carichi - ho lanciato il sito direttamente dall'editor VS2010, poiché è un collegamento ipertestuale
  • Verifica le impostazioni di compilazione. Scegliere 64 bit se il server è 64 bit.
  • Nel mio caso avevo un server a 64 bit, ma la scelta di x64 avrebbe fallito! Questo è stato il mio primo indizio.
  • Verifica che le impostazioni di test supportino i bit corretti.

Ho avuto lo stesso problema nel tentativo di accedere a Sharepoint 2010.

L'ho risolto cambiando Target Framework in .NET 3.5.- che è la versione supportata per Sharepoint 2010.

Nel mio caso si è trattato sicuramente di un problema di autorizzazioni con l'account con cui sono stato effettuato l'accesso a Windows.

Prova questo comando in SharePoint Management Shell in esecuzione come amministratore:

Get-SPSite ' http: // yoursite / yourcollection '

Se si verificano errori, accedere al server SharePoint come utente del pool di app o come account utilizzato per installare SharePoint e riprovare il comando precedente.

Se funziona, sai che il tuo account precedente ha un problema con le autorizzazioni. Per risolvere il problema, eseguire questo comando nella stessa finestra della shell e fornire l'account che si desidera utilizzare in VS:

Add-SPShellAdmin -UserName Domain \ User

Ho avuto lo stesso problema, ho apportato le modifiche seguenti e ha iniziato a funzionare.

  1. Modifica della destinazione della piattaforma in Visual Studio su x64
  2. assicurati di eseguire Visual Studio in " Amministratore " modalità.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top