none
Acces page ASP.Net pour accéder a une bibliothèque de documents sous SharePoint RRS feed

  • Question

  • Bonjour,

    Sur SharePoint, j'ai crée un site "deliberation" afin d'y mettre des documents!
    J'y ai crée une Bibliothèque de documents "Conseil en attente".

    J'ai crée un site ASP.Net que j'ai déployé dans IIS independament de SharePoint (nom du serveur sous IIS "http://share-04:31925").
    J'aimerai acceder aux documents de la bibliotheque "Conseil en attente".
    Voici mon code

    Extrait de code
    private SPWeb _web;

         private SPSite _site;


         private void Page_Load(object sender, System.EventArgs e)

    {

         string portalURL = "http://share-04:31925/sites/collaboration/deliberation/";
         _site = new SPSite(portalURL);

         _web = _site.OpenWeb();

    string portalURL = _web.Url;

         string docLibURL = "Conseil en attente";
    SPFolderCollection Folders = site.GetFolder(docLibURL).SubFolders;
    ...
    }

    Lorsque j'essaie d'acceder a la page de mon site ASP.Net,  j'ai cette erreur que je ne comprend pas :x

    Erreur du serveur dans l'application '/'.

    L'application Web est introuvable à l'adresse http://share-04:31925/sites/collaboration/deliberation/. Vérifiez que l'URL a été correctement entrée. Si l'URL doit héberger un contenu existant, l'administrateur système devra peut-être ajouter à l'application concernée un nouveau mappage pour l'URL de demande.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.IO.FileNotFoundException: L'application Web est introuvable à l'adresse http://share-04:31925/sites/collaboration/deliberation/. Vérifiez que l'URL a été correctement entrée. Si l'URL doit héberger un contenu existant, l'administrateur système devra peut-être ajouter à l'application concernée un nouveau mappage pour l'URL de demande.

    Erreur source:

    Ligne 37 :         portalURL = "http://share-04:31925/sites/collaboration/deliberation/";// ConfigurationManager.AppSettings["urlServeur"];
    Ligne 38 : _site = new SPSite(portalURL);
    Ligne 39 : _web = _site.OpenWeb();
    Ligne 40 : portalURL = _web.Url;

    Fichier source : e:\Projet VA\Delibs\Default.aspx.cs    Ligne : 38

    Trace de la pile:

    [FileNotFoundException: L'application Web est introuvable à l'adresse http://share-04:31925/sites/collaboration/deliberation/. Vérifiez que l'URL a été correctement entrée. Si l'URL doit héberger un contenu existant, l'administrateur système devra peut-être ajouter à l'application concernée un nouveau mappage pour l'URL de demande.]
    Microsoft.SharePoint.SPSite..ctor(SPFarm farm, Uri requestUri, Boolean contextSite, SPUserToken userToken) +1618
    Microsoft.SharePoint.SPSite..ctor(String requestUrl) +92
    _Default.Page_Load(Object sender, EventArgs e) in e:\Projet VA\Delibs\Default.aspx.cs:38
    System.Web.UI.Control.OnLoad(EventArgs e) +99
    System.Web.UI.Control.LoadRecursive() +47
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1061

    J'aimerai savoir si je m'y prend bien pour l'url du serveur, a savoir que j'ataque bien la bibliotheque sur site deliberation
    quelqu'un peut éclairer ma lanterne? Big Smile

    merki
    mercredi 28 novembre 2007 14:26

Réponses

  • Bonjour,

    J'ai trouvé l'erreur, et votre réponse Gat, me confirme que c'etait bien ça Big Smile

    Sur IIS, pour mon site j'ai du créer un parametre d'application et mettre le pool d'application de SharePoint!
    Ensuite, apres quelques debug niveau web.config (j'ai du enlever <authentication mode="Windows"/>, est ce normal?)


    et mtnt j'ai une nouvelle vilaine erreur :x

    Erreur du serveur dans l'application '/'.

    La référence d'objet n'est pas définie à une instance d'un objet.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution de la demande Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:

    [NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.]
    Microsoft.SharePoint.WebControls.SPControl.EnsurePageUri() +81
    Microsoft.SharePoint.WebControls.SPControl.get_PageUri() +24
    Microsoft.SharePoint.WebControls.FormDigest.RenderCore(SPWeb web) +99
    Microsoft.SharePoint.WebControls.FormDigest.OnPreRender(EventArgs e) +141
    System.Web.UI.Control.PreRenderRecursiveInternal() +77
    System.Web.UI.Control.PreRenderRecursiveInternal() +161
    System.Web.UI.Control.PreRenderRecursiveInternal() +161
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint
    , Boolean includeStagesAfterAsyncPoint) +1360


    Informations sur la version : Version Microsoft .NET Framework :2.0.50727.42; Version ASP.NET :2.0.50727.210




    en mode débug, je passe bien dans ma méthode onLoad, du début a la fin :x
    et je pige pas vraiment l'erreur, peut-il y avoir un rapport avec le
    Extrait de code

    <SharePoint:FormDigest runat="server" />


    ???

    merki!
    jeudi 29 novembre 2007 12:51
  • Finalement, j'ai trouvé une solution afin d'autorisé les ajout/modification de la bibliotheque!

    il y a 2 solutions:
    • Dans Administration centrale > Gestion des applications > Paramètres généraux de l'application Web , désactivé la Validation de la séciruté des pages web.  Mais ça rend les sites vunérables!
    • Via code behind
    Extrait de code

    SPSite site = new SPSite(portalURL);
    SPWeb web = site.OpenWeb();
    //on coupe la sécurité
    web.AllowUnsafeUpdates = true


    J'aimerai savoir si cette autorisation ne met pas en péril le reste de l'application!

    merki

    par contre je comprend toujours pas pourquoi le <SharePoint:FormDigest runat="server" /> ne fonctionne pas!






    vendredi 30 novembre 2007 13:40

Toutes les réponses

  • J'ai écris ce petit programme a executé en mode console qui me liste les répertoires situé dans la bibliothèque "Conseil en attente" de mon site "deliberation"

    Extrait de code

    using System;
    using System.Collections.Generic;
    using System.Text;
    using Microsoft.SharePoint;

    namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                string siteUrl = "http://share-04:31925/sites/collaboration/deliberation/";

                SPSite site = new SPSite(siteUrl);
                SPWeb web = site.OpenWeb();
                //récupération des dossiers de la bibliothèque
                SPFolderCollection Folders = web.GetFolder("Conseil en attente").SubFolders;
                //affichage des dossiers
                int i = 0;
                foreach (SPFolder Folder in Folders)
                {
                    Console.WriteLine("Dossier " + i + " : " + Folder.Name);
                    i++;
                }
                Console.ReadLine();
            }
        }
    }


    Et ça marche bien!
    Je comprend pas pourquoi mon site ASP.Net déployé avec IIS ne fonctionne pas!

    :x

    merki
    mercredi 28 novembre 2007 15:14
  • Bonjour,

     

    "deliberation" correspond t-il à un site ou à une collection de sites ? S'il s'agit d'un site, vous devriez procéder comme suit :

     

    portalURL = http://share-04:31925/sites/collaboration;
    _site = new SPSite(portalURL);
    _web = _site.Webs["deliberation"];
    portalURL = _web.Url;

     

    Ca mis à part, l'opération devrait tout de même fonctionner. Il peut y avoir une autre différence avec le projet console, même si elle ne me parait pas évidente vue l'erreur.. à tout hasard, sous quelle identité tourne votre application asp.net ?

    mercredi 28 novembre 2007 22:37
    Modérateur
  • Bonjour,

    "deliberation" corespond a un site, mais il y a une erreur dans votre code sur la ligne
    Extrait de code

    _web = _site.Webs["deliberation"];


    dans mon code _web est un SPWeb et non un SPSite.

    Je me demande si c'est pas un problème lié a IIS 6.0!

    Mon site se nomme "Delibs"
    sous IIS, et il doit attaquer la bibliothèque de mon site SharePoint nommé "SharePoint - 31925" sous IIS (pour remettre tout dans le bon contexte).

    Je me demande si je ne dois pas donné le droit d'entrer au Server SharePoint pour mon site via les mappages des accès ou tout autre chose a gérer via SharePoint ou IIS!

    merki

    néanmoins je vais continuer a faire des tests que je ferais part ici! Smile
    jeudi 29 novembre 2007 07:53
  • Actuellement, j'essaie de mettre mon site ASP.Net dans le répertoire /layouts de SharePoint.

    Lorsque j'essaie d'y acceder, tout ce que j'obtiens est une page blanche!

    alors, j'ai testé en mettant dans le repertoire de mon site une simple page html de test tutu Stick out tongue
    et la pareil, j'obtiens juste une page blanche :x

    serait-ce un problème de configuration de IIS?
    et/ou comment résoudre le problème Big Smile

    merki
    jeudi 29 novembre 2007 09:48
  • Bonjour

     

    Vu que votre application fonctionne bien, je suppose qu'il y a un souci avec l'authentification.

     

    Essayez de faire tourner votre site ASP.Net avec le même pool d'application que votre site SharePoint. Testez aussi en utilisant de l'impersonation.

    jeudi 29 novembre 2007 11:03
  • Bonjour,

    J'ai trouvé l'erreur, et votre réponse Gat, me confirme que c'etait bien ça Big Smile

    Sur IIS, pour mon site j'ai du créer un parametre d'application et mettre le pool d'application de SharePoint!
    Ensuite, apres quelques debug niveau web.config (j'ai du enlever <authentication mode="Windows"/>, est ce normal?)


    et mtnt j'ai une nouvelle vilaine erreur :x

    Erreur du serveur dans l'application '/'.

    La référence d'objet n'est pas définie à une instance d'un objet.

    Description : Une exception non gérée s'est produite au moment de l'exécution de la demande Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

    Détails de l'exception: System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.

    Erreur source:

    Une exception non gérée s'est produite lors de l'exécution de la demande Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

    Trace de la pile:

    [NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.]
    Microsoft.SharePoint.WebControls.SPControl.EnsurePageUri() +81
    Microsoft.SharePoint.WebControls.SPControl.get_PageUri() +24
    Microsoft.SharePoint.WebControls.FormDigest.RenderCore(SPWeb web) +99
    Microsoft.SharePoint.WebControls.FormDigest.OnPreRender(EventArgs e) +141
    System.Web.UI.Control.PreRenderRecursiveInternal() +77
    System.Web.UI.Control.PreRenderRecursiveInternal() +161
    System.Web.UI.Control.PreRenderRecursiveInternal() +161
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint
    , Boolean includeStagesAfterAsyncPoint) +1360


    Informations sur la version : Version Microsoft .NET Framework :2.0.50727.42; Version ASP.NET :2.0.50727.210




    en mode débug, je passe bien dans ma méthode onLoad, du début a la fin :x
    et je pige pas vraiment l'erreur, peut-il y avoir un rapport avec le
    Extrait de code

    <SharePoint:FormDigest runat="server" />


    ???

    merki!
    jeudi 29 novembre 2007 12:51
  • Dans ma page .aspx, quand j'enleve la balise SharePoint
    Extrait de code

    <SharePoint:FormDigest runat="server" />


    mon site fonctionne, mais comme je crée des dossiers/documents dans la bibliotheque du site dans SharePoint, j'ai l'exception:

    {"La validation de la sécurité de cette page n'est pas valide. Cliquez sur Précédente de votre navigateur et retentez l'opération."}

    il me semble que le FormDigest est nécessaire pour gérer de l'ajout/modification de donnée dans une liste collaborative, parce qu'il établit le contexte de sécurité nécessaire au serveur SharePoint (ref The Mit's Blog)

    comment puis-je régler ce problème?

    merci

    jeudi 29 novembre 2007 15:28
  • Finalement, j'ai trouvé une solution afin d'autorisé les ajout/modification de la bibliotheque!

    il y a 2 solutions:
    • Dans Administration centrale > Gestion des applications > Paramètres généraux de l'application Web , désactivé la Validation de la séciruté des pages web.  Mais ça rend les sites vunérables!
    • Via code behind
    Extrait de code

    SPSite site = new SPSite(portalURL);
    SPWeb web = site.OpenWeb();
    //on coupe la sécurité
    web.AllowUnsafeUpdates = true


    J'aimerai savoir si cette autorisation ne met pas en péril le reste de l'application!

    merki

    par contre je comprend toujours pas pourquoi le <SharePoint:FormDigest runat="server" /> ne fonctionne pas!






    vendredi 30 novembre 2007 13:40