Lösning: System.io.FileNotFoundException på “SPSite = ny SPSite(URL)”

UPPDATERING: Jag postat denna fråga till MSDN här (http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=2808543&SiteID=1&mode=1) och Michael Washam av Microsoft svarade med ett koncist svar.

Jag skapade en webbtjänst för att fungera som en BDC-vänlig fasad till en SharePoint-lista. När jag använde detta från min utvecklingsmiljö, det fungerade bra. När jag flyttade detta till en ny server, Jag stötte på detta fel:

System.IO.FileNotFoundException: Webbprogrammet på http://localhost/sandbox kunde inte hittas. Kontrollera att du har skrivit adressen korrekt. Om Webbadressen ska att servera befintligt innehåll, systemadministratören kan behöva lägga till en ny begäran URL-mappning för den avsedda appliceringen. på Microsoft.SharePoint.SPSite...ctor(SPFarm gård, URI requestUri, Boolean contextSite, SPUserToken userToken) på Microsoft.SharePoint.SPSite...ctor(Sträng requestUrl) på Conchango.xyzzy.GetExistingDocument(Sträng minId, Sträng maxId, Sträng titleFilter) i C:\Dokument och SettingsPaulMy DocumentsVisual Studio 2005ProjectsxyzzyBDC_DocReviewBDC_DocReviewDocReviewFacade.asmx.cs:linje 69

Här är linje 69:

med hjälp av (SPSite webbplats = nya SPSite("http://localhost/sandbox"))

Jag försökte olika varianter på Webbadressen, med hjälp av serverns riktiga namn, dess IP-adress, avslutande snedstreck på Webbadressen, m.m.. Jag fick alltid som fel.

Jag använde Google till forskning om det. Massor av människor står inför denna fråga, eller varianter av det, men verkade ingen ha det löst.

Tricksy MOSS som sådan en detaljerad fel att det inte uppstår för mig att kontrollera den 12 kupan loggar. Så småningom, om 24 timmar efter min kollega bör jag göra så, Jag kollade ut den 12 bikupa stock och hittade denna:

Ett undantag uppstod vid försök att förvärva den lokala servergruppen:
System.Security.SecurityException: Önskade registret åtkomst tillåts inte.
på System.ThrowHelper.ThrowSecurityException(ExceptionResource resurs) på Microsoft.Win32.RegistryKey.OpenSubKey(String namn, Boolean skrivbar) på Microsoft.Win32.RegistryKey.OpenSubKey(String namn) på Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_RegistryConnectionString() på Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_Local() på Microsoft.SharePoint.Administration.SPFarm.FindLocal(SPFarm& gård, Booleskt värde& isJoined)
Zonplanera av församlingen som inte var:  Här datorn

Detta öppnade upp nya vägar för forskning, så var det tillbaka till The Google. Som ledde mig till detta foruminlägg: http://forums.CodeCharge.com/posts.php?post_id = 67135. Det hjälpte verkligen mig men det börja göra jag tror det var en databas och/eller säkerhet fråga. Jag soldiered och Andrew Connell Bokför slutligen utlösta tanken att jag ska se till att programpoolens identitet konto hade tillgång till databasen. Jag trodde det gjorde redan. Men, min kollega och gav den app pool identitet konto full tillgången till SQL.

Så snart hon gjorde ändringen, allt började arbeta.

Vad hände nästa bästa uttrycks som en Haiku dikt:

Problem höja sina händer.
Du swing och miss. Försök igen.
Framgång! Men hur? Varför?

Hon ville inte lämna saker ensam sådär, föredrar att ge de minsta krävs tillstånd (och förmodligen tanke skriver en bloggpost; Jag slog henne till punsch, muhahahahaha!).

Hon bort successiva behörigheter från app pool identitetskontot tills … Det fanns inte längre någon uttrycklig tillåtelse för app pool identitetskontot alls. Webbtjänsten fortsatte att fungera bra.

Vi gick och rebooted servrar. Allt fortsatte att fungera bra.

Så, till resumé: Vi gav den full tillgången till app pool identitet och sedan tog det bort. Webbtjänsten började arbeta och aldrig slutat fungera. Bisarra.

Om någon vet varför det bör ha arbetat, lämna gärna en kommentar.

</slutet>

Technorati Tags:

11 tankar på "Lösning: System.io.FileNotFoundException på “SPSite = ny SPSite(URL)”

  1. Benjamin

    dude , Jag älskar dig , u gjorde min dag , Jag arbetade på det för nästan en dag , och du bevarat rättvis min tid

    Svar
  2. Fernando Flores Gómez

    Trevlig post, Tack. I mitt fall, mitt problem var löst genom att ändra den webservice apppool för att matcha sharepoint-webbplatssamlingen.

    Skål,
    Fernando A. Gómez F.

    Svar
  3. Wilson Edgar

    Hej, Jag hade också samma problem. Samtidigt utveckla på samma maskin med sharepoint server, Jag var med Asp utvecklingsserver med olika behörighet inte absolut inte körs under samma identitet som sharepoint (mer om detta här: http://msdn.microsoft.com/en-us/library/58wxa9w5(VS.80).aspx) Än sen då, Jag har skapa en ny webbplats i IIS (Port 8080) med samma identitet som sharepoint.. och voila.
    Hoppas att detta hjälper

    Svar
  4. Zac Boyles
    Det finns en god chans att SQL'S securityadmin serverrollen fast frågan du hade när det var sprang. Det skulle vara en bra förklaring för det fortsätter att arbeta.
    Svar
  5. Alv

    Trevlig writeup. Vi har exakt samma problem just nu. Denna typ av problem och oväntade/oförklarlig beteende är exakt varför många utvecklare inte kan stå arbetar med SharePoint!

    Svar
  6. Markus

    Denna del av artikeln….”gav den app pool identitet konto full tillgången till SQL”, kan du berätta mer? “app Programpools-ID” Jag antar betyder programpool för sharepoint-webbplatsen, Men “full tillgång till SQL”, Hur ger du som? Skapa en inloggning på db servern för app pool identitet tror jag är inte riktigt tillräckligt…så är det på den sharepoint content db där den ny inloggningen blir dbo (?) tillgång? Eller andra sharepoint db: s samt, som den config db? För mig är tuff, eftersom min sp content db tydligen inte är hanteras av sql server-instansen, Tydligen är det under “/Microsoft Office Servers/14.0/Data”, Hur som helst ser jag inte det i sql server mgr….några idéer hur jag ge “full tillgång till SQL” i detta fall? Något svar skulle uppskattas…Jag är typ fast att få min konsol app att skapa ett spsite-objekt!!

    Svar

Lämna svar

Din e-postadress kommer inte att publiceras. behövliga fält är markerade *