Solution: System.IO.FileNotFoundException sur “SPSite = nouveau SPSite(URL)”

MISE À JOUR: J'ai posté cette question à MSDN ici (http://forums.microsoft.com/Forums/ShowPost.aspx?PostID=2808543&SiteID=1&mode=1) et Michael Washam de Microsoft a répondu avec une réponse concise.

J'ai créé un service web d'agir comme un Façade de la BDC-facile vers une liste SharePoint. Quand j'ai utilisé cela de mon environnement de développement, il fonctionnait bien. Quand j'ai migré ce vers un nouveau serveur, J'ai rencontré cette erreur:

System.IO.FileNotFoundException: L'application Web à http://localhost/sandbox On ne pouvait trouver. Vérifiez que vous avez correctement tapé l'URL. Si l'URL doit être au service de contenu existant, l'administrateur système peut besoin d'ajouter un nouveau mappage d'URL de demande à l'application envisagée. à Microsoft.SharePoint.SPSite...ctor(Ferme SPFarm, URI requestUri, ContextSite booléenne, UserToken SPUserToken) à Microsoft.SharePoint.SPSite...ctor(Chaîne requestUrl) à Conchango.xyzzy.GetExistingDocument(Chaîne minId, Chaîne maxId, Chaîne titleFilter) en c:\Documents et SettingsPaulMy DocumentsVisual Studio 2005ProjectsxyzzyBDC_DocReviewBDC_DocReviewDocReviewFacade.asmx.cs:ligne 69

Voici la ligne 69:

à l'aide de (Site SPSite = nouveau SPSite("http://localhost/sandbox"))

J'ai essayé différentes variations sur l'URL, y compris en utilisant le nom réel du serveur, son adresse IP, les barres obliques sur l'URL, etc.. J'ai toujours eu cette erreur.

J'ai utilisé Le Google pour une recherche. Beaucoup de gens font face à ce problème, ou des variantes de celui-ci, mais personne ne semblait avoir résolu.

MOSS tricksy fourni une telle détaillée erreur qu'il n'a pas lieu pour moi de vérifier la 12 journaux de la ruche. Par la suite, sur 24 heures après mon collègue Je le fais a recommandé, J'ai vérifié la 12 Journal de la ruche et trouvé ceci:

Une exception s'est produite alors qu'il tentait d'acquérir la batterie locale:
System.Security.SecurityException: Accès au Registre demandé n'est pas autorisé.
à System.ThrowHelper.ThrowSecurityException(Ressources ExceptionResource) à Microsoft.Win32.RegistryKey.OpenSubKey(Nom de chaîne, Boolean en écriture) à Microsoft.Win32.RegistryKey.OpenSubKey(Nom de chaîne) à Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_RegistryConnectionString() à Microsoft.SharePoint.Administration.SPConfigurationDatabase.get_Local() à Microsoft.SharePoint.Administration.SPFarm.FindLocal(SPFarm& ferme, Boolean& isJoined)
La Zone de l'assembly qui a échoué était:  Poste de travail

Cela ouvre de nouvelles pistes de recherche, il était donc retour de The Google. Cela m'a conduit à cette post sur le Forum: http://forums.CodeCharge.com/posts.php?post_id = 67135. Qui n'a pas vraiment m'aider mais il n'a démarré me fait penser qu'il y avait un problème de base de données et/ou de sécurité. J'ai persévéré et De Andrew Connell poster finalement déclenchée la pensée que je devrais faire en sorte que le compte d'identité du pool d'applications avait accès à la base de données. J'ai pensé que c'était déjà le cas. Cependant, mon collègue est allé et a donné l'app pool identité compte un accès complet à SQL.

Dès qu'elle a fait ce changement, tout a commencé à travailler.

Ce que ce fut le cas suivant est le mieux exprimé comme un haïku poème:

Problèmes lèvent leurs mains.
Vous swing et miss. Réessayez.
Succès! Mais comment? Pourquoi?

Elle ne voulait pas laisser les choses tranquilles comme ça, préférant se donner la permission requise minimale (et sans doute dans une optique d'écrire une entrée de blog; J'ai battue pour le punch, muhahahahaha!).

Elle enlève les autorisations successives sur le compte d'identité de pool app jusqu'en … Il n'existait plus aucune autorisation explicite pour le compte d'identité du pool application à tous les. Le service web a continué à fonctionner parfaitement.

Nous sommes allés et redémarré les serveurs. Tout a continué à fonctionner correctement.

Si, pour récapituler: Nous avons donné l'accès complet de l'identité app pool et puis il a enlevé. Le service web a commencé à travailler et jamais cessé de travailler. Bizarre.

Si quelqu'un sait pourquoi qui ont travaillé, Veuillez laisser un commentaire.

</fin>

Tags Technorati:

11 réflexions sur "Solution: System.IO.FileNotFoundException sur “SPSite = nouveau SPSite(URL)”

  1. Benjamin

    Dude , Je t'aime , u a fait ma journée , J'ai travaillé dessus pendant presque une journée , et vous venez d'enregistrer mon temps

    Réponse
  2. Fernando Gómez Flores

    Joli post, Merci. Dans mon cas, mon problème a été résolu en changeant le pool d'applications du webservice pour correspondre à celle de la collection de sites sharepoint.

    Cheers,
    Fernando A. Gómez F.

    Réponse
  3. Wilson Edgar

    Salut, J'ai également eu le même problème. Tout en développant sur la même machine avec sharepoint server, J'utilisais le serveur de développement Asp avec permission différente certainement ne fonctionne ne pas sous la même identité que sharepoint (plus sur cette espèce: http://msdn.microsoft.com/en-us/library/58wxa9w5(ADRESSE).aspx) Et alors, J'ai créer un nouveau site dans IIS (Port 8080) avec la même identité que sharepoint.. et voila.
    Espérons que cela aide à

    Réponse
  4. Zac Boyles
    Il y a de bonnes chances que rôle de serveur de SQL securityadmin fixe la question que vous ont eu une fois qu'il a été exécuté. Ce serait une bonne explication pour qu'il continue de travailler.
    Réponse
  5. Faery

    Writeup Nice. Nous sommes d'avoir exactement le même problème dès maintenant. Ce genre de problème et comportement inattendu/inexpliquées est exactement la raison pour laquelle beaucoup de développeurs ne supporte pas travailler avec SharePoint!

    Réponse
  6. Markus

    Cette partie de l'article….”donna l'app pool identité compte un accès complet à SQL”, pouvez-vous élaborer? “identité du pool d'application” Je présume que signifie le pool d'applications du site sharepoint, mais “accès complet à SQL”, Comment voulez-vous que donner? Création d'un login sur le serveur de db pour l'identité du pool d'app que je pense n'est pas assez…C'est donc sur la db de contenu sharepoint où la nouvelle connexion obtient dbo (?) accès? Ou autre sharepoint de db ainsi, comme le Pb de config? Pour moi, c'est difficile, car mon db de contenu sp, apparemment, n'est pas géré par instance sql server, apparemment, c'est en vertu de “/Microsoft Office Servers/14.0/Data”, de toute façon je ne vois pas dans sql server mgr….toutes les idées que je donne “accès complet à SQL” dans ce cas? Une réponse serait appréciée…Je suis gentille coincé obtenir mon application console pour créer un objet spsite!!

    Réponse

Laissez une réponse à Benjamin Annuler la réponse

Votre adresse email ne sera pas publiée. les champs requis sont indiqués *