Frage

Ich versuche, eine Instanz von SPSite auf dem Farm-Server in einem benutzerdefinierten Prozess (MyApp.exe) und ich gebe sie als Parameter instanziiert die gesamte URI ( http: // mysite: 80 / ). Ich habe auch sicher, dass das Konto ausgeführt MyApp.exe ist Site Collection Administrator.

Allerdings kann ich keine Instanz SPSite machen, was ich zu tun versuchen. Es wirft immer einen FileNotFoundException.

Hat jemand eine Idee?

Stacktrace:

  

an   Microsoft.SharePoint.SPSite..ctor (SPFarm   Bauernhof, Uri RequestURI, Boolean   contextSite, SPUserToken Usertoken)
  beim   Microsoft.SharePoint.SPSite..ctor (String   requestUrl) bei   MyCompanyName.Service.HelperClass.GetItemStateInSharePoint (SharePointItem   Artikel) in   C: \ Workspaces \ MyCompanyName \ Entwicklung \ Main \ MyCompanyName.SharePoint \ Service \ HelperClass.cs: line   555

Eine andere Randnotiz ... Ich habe eine Web Application + Websitesammlung, die ich über den Browser ohne Probleme zugreifen können.

War es hilfreich?

Lösung

Die FileNotFoundException wird von Sharepoint ausgelöst, wenn es nicht die gewünschten Websitesammlung in der Sharepoint-Konfigurationsdatenbank finden. Meine Vermutung ist, dass Sie noch nicht eine Websitesammlung auf der URL http: // mysite: 80 . Ich sehe den folgenden Stack-Trace, wenn ich ein neues SPSite-Objekts mit der URL einer nicht vorhandenen Websitesammlung versuchen und instanziiert:

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)

Geben Sie die richtige URL der Websitesammlung oder Open-Zentraladministration und erstellen Sie eine neue Site Collection.

Andere Tipps

Ändern die Plattform Ziel in den Build-Eigenschaften für mich auf Sharepoint 2010 dieses Problem zu lösen X64.

Bitte lesen Sie diese Website http://community.bamboosolutions.com/forums/t/ 8179.aspx , wenn Sie Ihre OS X 64 Bit ausgeführt werden und werden mit MSTest (32bit) es wird fehlschlagen, verwenden nunit funktioniert !!!

Wenn es eine Konsolenanwendung Zugriff auf Sharepoint 2010 Sie Ihr Projekt Build-Ziel sicher ist x64 und .NET Framework ist 3.5.

Diese Ausgabe ist mehr Benutzerberechtigungsproblem gibt die folgende Berechtigung

Benutzerberechtigung Sharepoint-Website --- Mindestleseberechtigung

Sharepoint Server --- In der WSS_ADMIN_WPG Gruppe

Datenbank --- Sharepoint-Content DB (Websitesammlungsdatenbank) - Db_owner Erlaubnis                            Sharepoint Config DB (Config DB von Sharepoint-Installation) - - Db_owner Erlaubnis

Lesen Sie mehr in meinem Blog

http://sharepointinstallation.blogspot.com/ 2010/12 / minimal-Erlaubnis-required-to-execute.html

Es ist auch möglich, dass das Objektmodell nicht auf die URL nicht mögen Sie es sind zu geben. Wenn Sie nicht bieten es entweder mit der genauen URL, an dem Sie die Websitesammlung erstellt oder eine genaue URL aufgeführt in Ihrem in Ihrem Alternate Access Mappings konfiguriert ist, wird es eine Ausnahme auslösen, die nicht unbedingt Sinn machen könnte. In Ihrem Fall könnten Sie http://mysite oder http://machinename versuchen.

Stacktrace der Ausnahme wäre hilfreich.

Ich glaube, Sie möglicherweise eine Vorstellung davon bekommen, was Datei es ist und was geschieht mit „nur mein Code“ in Tools zu deaktivieren -> Optionen -> Debuggen und in den Call-Stack auf dem Dateinamen als Argument sucht der Ausnahme, wenn die Debugger zeigt es (wenn man es natürlich debuggen kann), oder vielleicht der Name zeigt, in der Ausnahmemeldung auf.

überprüfen Sie Ihre web.config und sehen, ob es eine Config dort mit einer Datei fehlt.

Schauen Sie in Ihnen Struktur 12 für das Protokoll. Wenn Sie Ihre Log-Einstellungen korrekt sind, werden Sie die Datei erhalten fehlt.

EDIT: Prüfen Sie auch, ob alle Ihre DLL im GAC sind. Überprüfen Sie, ob Ihre web.config Datei, die alle Informationen enthält: Namespace, Klassenname, Namespace, Version = version_number, Kultur-your_culture, PublicKeyToken = your_signed_token

Ich habe vor kurzem entdeckt, dass dieses Problem mit dem Konstruktor Ursache von starnge Verhalten des Konstrukteurs sein kann.
Ich nehme über MOSS 2007. Wenn Sie vorbei eine vollständige Site-URL an den Konstruktor, was es zu tun scheint, ist wirklich nur die Website Teil der URL zu prüfen, die Web-Anwendung zu wählen, die in der Web-Anwendung Wählersteuer ‚aktuell angewählter‘ ist.
So zum Beispiel, wenn Sie haben " http: // webapp / sites / site " und haben „ http: // weabapp: 22345 “aktuell ausgewählte (das letzte Mal, wenn Sie es in einem solchen Selektor ausgewählt), wenn Sie anrufen

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

Es wird versucht, tatsächlich ein Standortobjekt erstellen für „ http: // webapp: 22345 / sites / site “und schlägt fehl.

Ich hatte das gleiche Problem. Ich wollte Konsolenanwendung mit meiner Benutzer-ID ausgeführt werden. Ich bin Webapplikation Eigentümer + Farm Admin. Noch war nicht in der Lage, die Anwendung auszuführen.

Ausgabe wurde aufgelöst durch

  1. Ändern der Plattform Ziel in Build-Eigenschaften x64

  2. In-Site-Einstellungen -> Benutzer und Berechtigungen -> Websitesammlungsadministratoren gab es zwei Namen. Entfernt andere Namen, und es begann zu arbeiten.

Sie können das Projekt Kompilation Ziel halten auf „Any CPU“. Das wichtig dies ist der MSTest Host-Prozess zu konfigurieren, in 64bits zu laufen. Öffnen Sie Ihre .testsettings Datei, gehen Sie auf Registerkarte Hosts und setzen Sie "Run-Tests in 64-Bit ..."

Wenn nach diesem, wenn Sie Ihre Tests laufen VS sagt Ihnen, es gibt keine, entfernen und Ihr Testprojekt hinzufügen, wieder (ich weiß nicht, eine bessere Abhilfe für dieses)

Hoffe, es hilft!

Wir das gleiche Problem hatten, aber ich bin vertraut mit den verschiedenen Ursachen, hier eine Zusammenfassung:

  1. könnten Sie haben falsch eingegeben oder auf andere Weise eingegeben, um die falsche Adresse
  2. Das Benutzerkonto des Prozesses läuft die erforderlichen Berechtigungen nicht hat, die da sind:. Berechtigung Lesen für die Sharepoint-Website, und eine dbo der Sharepoint-Config db und Inhalt db
  3. Der Prozess muss ein 64-Bit-Prozess sein (die Standardeinstellung ist 64-Bit "Any CPU"), wenn sie auf einem 64-Bit-Server aufzubauen.
  4. Der Prozess muss in .NET 3.5
  5. ausgerichtet werden

Ich wurde vor durch diesen ein paar Wochen geplagt. Schließlich entdeckte ich, dass die Datei, die nicht gefunden werden konnte die Sharepoint-Baugruppe selbst war. Die Laufzeit versagte die Satelliten-Montage über die späte Bindung zu laden.

Die Lösung für mein Problem war die Sharepoint 12.0.0.0 Baugruppen im GAC zu registrieren. Es klingt nicht wie es das gleiche wie Ihr Problem ist, aber nur FYI.

Wir standen vor dem gleichen Problem vor ein paar Tagen, und die Lösung war, die Anwendung zu setzen, dass versucht de SPSite-Objekt zu erstellen, das gleiche AppPool zu verwenden, dass die Web-Anwendung Sharepoint.

Hoffe, es hilft.

Die MSTest auf x64 Problem war die Ursache für dieses Problem für mich. Arbeitet in einer Konsolenanwendung.

Ich habe ähnliche Art von Problem.

In meinem Szenario konnte ich die Instanz von SPSite von einer Konsole-Anwendung erstellen, aber wenn ein anderen Teamkollege versuchte, dies zu tun, warf die Anwendung die gleiche Ausnahme wie oben erwähnt.

Lösung: Ich habe die anderen Mitspieler als Administrator auf Inhalt Db Server-Box (das nicht für jeden möglich sein kann), der Code funktioniert und kein Fehler

Die gleiche Problem auf Sharepoint 2010. Doch das Problem mit unserem Web-Service war, die das Sharepoint-Objektmodell zugegriffen hat. Der App-Pool, der diese Arbeit unter laufen sollte eine Farm Admin sein.

Die Umstellung auf NUnit könnte keine Option für alle.
In meinem Fall war das Problem, dass ich auf einem 64-Bit-Server war, hatte ich Jede CPU überprüft (so war es die richtige Version Kommissionierung), aber meine Testeinstellungen wurden auf „Force-Tests in 32-Bit-Prozess ausgeführt“ (GAH!
)

In MSTest, Zur TEST-> Bearbeiten Test-Einstellungen-> Trace und Test Auswirkungen.
Wählen Sie Hosts.
Stellen Sie sicher, dass Sie gegen die richtige Version ausgeführt werden. Hier ist, was Sie sollten in der Kommissionierung

Hier ist meine Checkliste für VS2010 SP1, MSTest.

  • Sie müssen SP1, so dass Sie Tests zu .NET 3.5 ausrichten können. Es wird nicht mit .NET 4.0
  • arbeiten
  • Stellen Sie sicher, dass Sie die Seite loads- ich die Seite ins Leben gerufen direkt aus dem VS2010-Editor, da es sich um einen Hyperlink
  • ist
  • Überprüfen Sie Buildeinstellungen. So wählen Sie 64-Bit-Server, wenn 64-Bit.
  • In meinem Fall hatte ich ein 64-Bit-Server, aber die Wahl x64 würde scheitern! Das war mein erster Anhaltspunkt.
  • Stellen Sie sicher,
  • , dass die Testeinstellungen, um die richtigen Bits unterstützen.

Ich hatte das gleiche Problem versuchen, Sharepoint 2010 zugreifen zu können.

Ich reparierte sie durch das Target Framework Ändern 3.5.- auf .NET, die die unterstützte Version für Sharepoint 2010 ist.

In meinem Fall war es auf jeden Fall ein Berechtigungsproblem mit dem Konto, das ich in Fenster mit protokolliert wurde.

Versuchen Sie diesen Befehl in Sharepoint-Verwaltungsshell als Administrator ausgeführt werden:

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

Wenn Sie Fehler erhalten dann als app-Pool Benutzer zum Sharepoint Server einloggen oder das Konto verwendet Sharepoint zu installieren und zu dem obigen Befehl erneut versuchen.

Wenn es funktioniert, dann wissen Sie das vorherige Konto ein Problem mit den Berechtigungen hat. Um das Problem zu beheben, führen Sie diesen Befehl in der gleichen Shell-Fenster und liefern Sie das Konto in VS verwenden möchten:

Add-SPShellAdmin -UserName Domäne \ Benutzer

Ich hatte das gleiche Problem, ich habe folgende Änderungen und es begann zu arbeiten.

  1. Ändern der Zielplattform in Visual Studio x64
  2. sicherstellen, dass Sie Visual Studio in "Administrator" Modus ausgeführt werden.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top