Řešení: System.IO.FileNotFoundException na “SPSite = nové SPSite(Adresa URL)”

AKTUALIZOVAT: Jsem zde uveřejněných tuto otázku na MSDN (http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=2808543&SiteID=1&mode=1) a Michael Washam Microsoft se stručnou odpovědí.

Jsem vytvořil webovou službu jako BDC-přátelské fasáda do seznamu služby SharePoint. Když jsem použil tento od své vývojové prostředí, fungovalo to dobře. Když jsem se stěhoval to na nový server, Tuto chybu:

System.IO.FileNotFoundException: Webová aplikace na http://localhost/sandbox Nelze nalézt. Zkontrolujte, zda jste zadali adresu URL správně. Je-li adresa URL by měla poskytovat existující obsah, Správce systému pravděpodobně muset přidat nové mapování adresy URL požadavku na požadovanou aplikaci. na Microsoft.SharePoint.SPSite...ctor(Farmu SPFarm, RequestUri identifikátoru URI, Logické contextSite, SPUserToken userToken) na Microsoft.SharePoint.SPSite...ctor(Řetězec requestUrl) na Conchango.xyzzy.GetExistingDocument(Řetězec minId, Řetězec maxId, Řetězec titleFilter) v C:\Dokumenty a SettingsPaulMy DocumentsVisual Studio 2005ProjectsxyzzyBDC_DocReviewBDC_DocReviewDocReviewFacade.asmx.cs:čára 69

Tady je linka 69:

použití (Webů SPSite = nové SPSite("http://localhost/sandbox"))

Zkoušel jsem různé varianty na URL, včetně použití skutečné jméno na serveru, jeho IP adresu, koncové lomítka na URL, atd. Vždycky jsem tuto chybu.

Použil jsem Google do výzkumu. Spousta lidí čelit tomuto problému, nebo varianty, ale nikdo si to vyřešil.

Podvod MOSS poskytuje takové podrobné chyby, nenapadlo mě zkontrolovat 12 podregistr protokoly. Nakonec, o 24 hodin po můj kolega doporučujeme že tak učinit, Ověřil jsem si 12 podregistr protokol a našli jsme tohle:

Došlo k výjimce při pokusu o získání místní farma:
System.Security.SecurityException: Požadovaný přístup k registru není povoleno.
na System.ThrowHelper.ThrowSecurityException(ExceptionResource prostředek) na Microsoft.Win32.RegistryKey.OpenSubKey(Název řetězce, Logická hodnota zapisovat) na Microsoft.Win32.RegistryKey.OpenSubKey(Název řetězce) na Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_RegistryConnectionString() na Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_Local() na Microsoft.SharePoint.Administration.SPFarm.FindLocal(SPFarm& farma, Logická hodnota& isJoined)
Zóna shromáždění, které se nezdařily:  Tento počítač

To otevřelo nové cesty výzkumu, tak to bylo zpět na Google. To mě vedlo k tomuto příspěvek ve fóru: http://forums.codecharge.com/posts.php?post_id = 67135. Opravdu mi nepomohl, ale to začalo, že mě přemýšlet, že je databáze nebo bezpečnostní problém. Já se dřel na a Andrew Connell Zaúčtujte konečně spuštěno pomyšlení, že bych měla ujistit, že účet identity fondu aplikací měl přiměřený přístup k databázi. Myslel jsem, že to už udělala. Avšak, můj kolega šel a dal app fondu identitu účtu plný přístup k serveru SQL.

Jak se tato změna, Všechno to začalo pracovat.

Co se stalo dál nejlépe vyjadřuje jako haiku báseň:

Problémy Zvedněte ruce.
Houpačka a miss. Zkuste to znovu.
Úspěch! Ale jak? Proč?

Ona nechtěla takhle nechat věci, raději dát minimální požadovaná oprávnění (a pravděpodobně zájmu psaní položky blogu; Jsem ji předběhl punč, muhahahahaha!).

Vytáhla z účtu identity fondu aplikací až po sobě následujících oprávnění … již nebylo žádné explicitní oprávnění pro účet identity fondu aplikací vůbec. Webová služba nadále fungovat v pohodě.

Šli jsme a restartovat servery. Vše stále funguje.

Tak, pro připomenutí: jsme dal přístup plný identitu fondu aplikací a pak ho vzal. Webová služba začala pracovat a nikdy nepřestal pracovat. Bizarní.

Pokud někdo ví, proč to mělo fungovat, Prosím, zanechte komentář.

</Konec>

Doplněk Technorati značky:

11 myšlenky na „Řešení: System.IO.FileNotFoundException na “SPSite = nové SPSite(Adresa URL)”

  1. Fernando Gómez Flores

    Pěkný příspěvek, Dík. V mém případě, můj problém byl vyřešen změnou webservice apppool aby odpovídala kolekce webů služby sharepoint.

    Zdravím,
    Fernando A. Gómez F.

  2. Wilson Edgar

    Ahoj, Také jsem měl stejný problém. Současně s rozvojem ve stejném počítači se serverem sharepoint, Byl pomocí vývojového serveru Asp s různými oprávněními není rozhodně není spuštěn pod stejnou identitou jako sharepoint (více o tomto zde: http://msdn.microsoft.com/en-us/library/58wxa9w5(VS.80).aspx) No a co, Já jsem vytvořit nový web v rámci služby IIS (přístav 8080) se stejnou identitou jako sharepoint.. a voila.
    Doufám, že to pomůže

  3. Zac Boyles
    Je tu dobrá šance, že role securityadmin serveru SQL opraven problém, kterým ses poté, co byl spuštěn. To by bylo dobré vysvětlení pro jeho pokračování práce.
  4. Legend

    Nice určitý psát. Teď máme přesně stejný problém. Tento druh problému a nečekané/nevysvětlitelné chování je přesně důvod, proč mnoho vývojářů nemůže vystát, práce s SharePoint!

  5. Markus

    Tato část článku….”dal app fondu identitu účtu plný přístup k SQL”, můžete upřesnit? “Identita fondu aplikací” Předpokládám, že znamená fond aplikací serveru sharepoint, Ale “plný přístup k SQL”, Jak se vám dát? Vytvoření přihlášení na db serveru pro identitu fondu aplikací, který myslím, že není dost…tak je to na sharepoint obsahu db, kde dostane nové přihlášení dbo (?) přístup? Nebo jiné služby sharepoint db také, jako config db? Pro mě, to je těžké, protože můj sp obsahu db zřejmě není zpracována instance serveru sql, Zřejmě je to pod “/Microsoft Office Servers/14.0/Data”, Každopádně nevidím to v sql server správce….nějaké nápady, jak dávám “plný přístup k SQL” v tomto případě? Jakákoli odpověď by ocenili.…jsem trochu zasekl se mé konzoly aplikace vytvořit objekt spsite!!

Zanech odpověď

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *