C# connexion à sharepoint avec un compte utilisateur
Dernière réponse : dans Programmation
Bonojur,
Après une recherche de 2 jours sur le net je me dirige vers vous espérant trouver une solution à mon problème.
en fait je veux établir une connexion à SP en utilisant un compte utilisateur(en mode anonyme j'ai pas de souci)
J'ai importé des références web d'authentification et de listes pour avoir le code suivant:
SPLists.Lists spLists = new SPLists.Lists();
authSP.CookieContainer = new System.Net.CookieContainer();
authSP.AllowAutoRedirect = true;
SPConnect.LoginResult loginSP = authSP.Login("administrateur", "pass");
if (loginSP.ErrorCode == SPConnect.LoginErrorCode.NoError)
{
// Now we can talk to the Lists Web service.
spLists.CookieContainer = authSP.CookieContainer;
//object list = spLists.GetList("presentationAccueil");
SPSite oSiteCollection = SPContext.Current.Site;
SPList listeee = oSiteCollection.AllWebs["http://vmspprod:25401"].Lists["presentationAccueil"];
}
en arrivant à la ligne: SPConnect.LoginResult loginSP = authSP.Login("administrateur", "pass") j'obtiens l'erreur NotInFormsAuthenticationMode.
y aurait-il un moyen de faire ce que je voulais?
Après une recherche de 2 jours sur le net je me dirige vers vous espérant trouver une solution à mon problème.
en fait je veux établir une connexion à SP en utilisant un compte utilisateur(en mode anonyme j'ai pas de souci)
J'ai importé des références web d'authentification et de listes pour avoir le code suivant:
Citation :
SPConnect.Authentication authSP = new SPConnect.Authentication();SPLists.Lists spLists = new SPLists.Lists();
authSP.CookieContainer = new System.Net.CookieContainer();
authSP.AllowAutoRedirect = true;
SPConnect.LoginResult loginSP = authSP.Login("administrateur", "pass");
if (loginSP.ErrorCode == SPConnect.LoginErrorCode.NoError)
{
// Now we can talk to the Lists Web service.
spLists.CookieContainer = authSP.CookieContainer;
//object list = spLists.GetList("presentationAccueil");
SPSite oSiteCollection = SPContext.Current.Site;
SPList listeee = oSiteCollection.AllWebs["http://vmspprod:25401"].Lists["presentationAccueil"];
}
en arrivant à la ligne: SPConnect.LoginResult loginSP = authSP.Login("administrateur", "pass") j'obtiens l'erreur NotInFormsAuthenticationMode.
y aurait-il un moyen de faire ce que je voulais?
Autres pages sur : connexion sharepoint compte utilisateur
Lassé par la pub ? Créez un compte
Salut,
Il y a plusieurs choses là...
Tu utilises les Web Services d'un côté, mais aussi le modèle Objet d'un autre côté...
Tu veux faire une page/webpart qui va être lancée directement dans SharePoint ? Ou est-ce que tu veux faire ça dans une application à part indépendante ?
Pour une page/webpart, tu peux utiliser le Modèle Objet, sinon si c'est pas directement dans SharePoint tu ne peux utiliser que les Web Services.
Après, par rapport à ton erreur, le Web Services Authentication.asmx n'est à utiliser que quand ton serveur SharePoint est en mode d'authentification Forms.
Vu l'erreur que tu as, ton serveur est en mode d'authentification Windows.
Si tu veux utiliser les Web Services SharePoint avec le mode Windows, tu n'as pas besoin de te connecter, tu as seulement besoin de passer les Credentials au Web Services.
Il y a plusieurs choses là...
Tu utilises les Web Services d'un côté, mais aussi le modèle Objet d'un autre côté...
Tu veux faire une page/webpart qui va être lancée directement dans SharePoint ? Ou est-ce que tu veux faire ça dans une application à part indépendante ?
Pour une page/webpart, tu peux utiliser le Modèle Objet, sinon si c'est pas directement dans SharePoint tu ne peux utiliser que les Web Services.
Après, par rapport à ton erreur, le Web Services Authentication.asmx n'est à utiliser que quand ton serveur SharePoint est en mode d'authentification Forms.
Vu l'erreur que tu as, ton serveur est en mode d'authentification Windows.
Si tu veux utiliser les Web Services SharePoint avec le mode Windows, tu n'as pas besoin de te connecter, tu as seulement besoin de passer les Credentials au Web Services.
SPLists.lists spLists = new SPLists.Lists();
spLists.Url = "http://vmspprod:25401/_vti_bin/Lists.asmx";
spLists.Credentials = new System.Net.NetworkCredentials("administrateur", "pass");
XmlNode list = spLists.GetList("presentationAccueil");
Bonjour,
Merci beaucoup de ta réponse.
effectivement, je veux faire la connexion dans une application à part.
Le script que tu m'as filé fonctionne bien après une adaptation, mais j'ai encore un problème.
SPLists.Lists spLists = new SPLists.Lists();
spLists.Url = "http://adresse/_vti_bin/Lists.asmx";
spLists.Credentials = new System.Net.NetworkCredential("administrateur", "passe","");
XmlNode list = spLists.GetListItems("presentationAccueil",null,null,null,null,null,null);
// XmlNode list = spLists.GetList("presentationAccueil");
string aa = list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value;
for (int i = 0; i < list.ChildNodes[1].ChildNodes.Count; i++)
{
if (list.ChildNodes[1].ChildNodes.Attributes != null)
{
urlIntranet = WebConfigurationManager.AppSettings["urlIntranet"];
string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
paramsRcu = new ParamRecu(list.ChildNodes[1].ChildNodes[1].Attributes["ows_ID"].Value,
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Created"].Value.Substring(0, 10),
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value,
intro,
"",
"",
""
);
listToJson.Add(paramsRcu);
break;
}
}
Response.Write("{\"totalCount\":\"" + nb + "\", \"results\":" + JsonConvert.SerializeObject(listToJson) + "}");
Quand je passe l'identifiant et le mot de passe, j'ai une fenêtre d'authentification sharepoint qui s'affiche. ceci me pose problème car je ne veux pas avoir cette fenetre. et est ce que c'est possible de ne pas passer par xml node, genre?
+ "<And><Eq><FieldRef Name=\"Publi_x00e9_\" /><Value Type=\"Choice\">Oui</Value></Eq>"
+ "<And><Leq><FieldRef Name=\"Date_x0020_de_x0020_d_x00e9_but\" /><Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\"><Today /></Value></Leq>"
+ "<Geq><FieldRef Name=\"Date_x0020_de_x0020_fin\" /><Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\"><Today /></Value>"
+ "</Geq>"
+ "</And>"
+ "</And>"
+ "</Where>";
objElements = list.GetItems(objQuery);
Merci encore de ta réponse et j'attends vivement ta réponse
Amicalement,
khaled.
Merci beaucoup de ta réponse.
effectivement, je veux faire la connexion dans une application à part.
Le script que tu m'as filé fonctionne bien après une adaptation, mais j'ai encore un problème.
Citation :
SPLists.Lists spLists = new SPLists.Lists();
spLists.Url = "http://adresse/_vti_bin/Lists.asmx";
spLists.Credentials = new System.Net.NetworkCredential("administrateur", "passe","");
XmlNode list = spLists.GetListItems("presentationAccueil",null,null,null,null,null,null);
// XmlNode list = spLists.GetList("presentationAccueil");
string aa = list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value;
for (int i = 0; i < list.ChildNodes[1].ChildNodes.Count; i++)
{
if (list.ChildNodes[1].ChildNodes.Attributes != null)
{
urlIntranet = WebConfigurationManager.AppSettings["urlIntranet"];
string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
paramsRcu = new ParamRecu(list.ChildNodes[1].ChildNodes[1].Attributes["ows_ID"].Value,
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Created"].Value.Substring(0, 10),
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value,
intro,
"",
"",
""
);
listToJson.Add(paramsRcu);
break;
}
}
Response.Write("{\"totalCount\":\"" + nb + "\", \"results\":" + JsonConvert.SerializeObject(listToJson) + "}");
Quand je passe l'identifiant et le mot de passe, j'ai une fenêtre d'authentification sharepoint qui s'affiche. ceci me pose problème car je ne veux pas avoir cette fenetre. et est ce que c'est possible de ne pas passer par xml node, genre
Citation :
liste.getElementCitation :
objQuery.Query = "<Where>"+ "<And><Eq><FieldRef Name=\"Publi_x00e9_\" /><Value Type=\"Choice\">Oui</Value></Eq>"
+ "<And><Leq><FieldRef Name=\"Date_x0020_de_x0020_d_x00e9_but\" /><Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\"><Today /></Value></Leq>"
+ "<Geq><FieldRef Name=\"Date_x0020_de_x0020_fin\" /><Value IncludeTimeValue=\"TRUE\" Type=\"DateTime\"><Today /></Value>"
+ "</Geq>"
+ "</And>"
+ "</And>"
+ "</Where>";
objElements = list.GetItems(objQuery);
Merci encore de ta réponse et j'attends vivement ta réponse
Amicalement,
khaled.
Tu as une fenêtre d'authentification sharepoint ??
Et tu peux faire un:
Edit: et si tu veux passer une query, c'est un des paramètres de GetListItems, je sais plus lequel, le 4 ou 5ème de mémoire.
Et tu peux faire un:
var nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("rs", "urn:schemas-microsoft-com:rowset"); nsmgr.AddNamespace("dt", "uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"); XmlNodeList rows = list.SelectNodes("rs:data/z:row", nsmgr);
Edit: et si tu veux passer une query, c'est un des paramètres de GetListItems, je sais plus lequel, le 4 ou 5ème de mémoire.
Bonjour,
Merci beaucoup de ta réponse.
Oui j'ai une fenêtre d'authentification sharepoint qui apparait.
Cela ne devrait pas arriver normalement car je me connecte à sharepoint depuis une application externe pour récupérer des listes et des images...
Y a t-il une moyen d’empêcher l'apparition de cette fenêtre.
Merci encore.
@+
Cordialement,
Khaled.
Merci beaucoup de ta réponse.
Oui j'ai une fenêtre d'authentification sharepoint qui apparait.
Cela ne devrait pas arriver normalement car je me connecte à sharepoint depuis une application externe pour récupérer des listes et des images...
Y a t-il une moyen d’empêcher l'apparition de cette fenêtre.
Merci encore.
@+
Cordialement,
Khaled.
salut,
voici le code que j'utilise:
try
{
//connexion à la BDD metadico
ConnectBDD cc = new ConnectBDD();
ConnectBDD.oSQLConn.Open();
DataSet ds = new DataSet();
//Paramétres d'affichage des actualités projets
string query = "SELECT valeurParametre FROM Parametre WHERE idParametre ='1';";
Data = new SqlDataAdapter(query, ConnectBDD.oSQLConn);
Data.Fill(ds, "wws_customers");
loRow = ds.Tables["wws_customers"].Rows[0];
int id_cat = Convert.ToInt32(loRow["valeurParametre"]);
loRow = ds.Tables["wws_customers"].Rows[0];
int nb = Convert.ToInt32(loRow["valeurParametre"]);
int nbArticleAffiche = 0;
SPLists.Lists spLists = new SPLists.Lists();
spLists.Url = "http://vmspprod:25401/_vti_bin/Lists.asmx";
spLists.Credentials = new System.Net.NetworkCredential("administrateur", "pass","");
XmlNode list = spLists.GetListItems("presentationAccueil",null,null,null,null,null,null);
string aa = list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value;
for (int i = 0; i < list.ChildNodes[1].ChildNodes.Count; i++)
{
if (list.ChildNodes[1].ChildNodes.Attributes != null)
{
urlIntranet = WebConfigurationManager.AppSettings["urlIntranet"];
string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
paramsRcu = new ParamRecu(list.ChildNodes[1].ChildNodes[1].Attributes["ows_ID"].Value,
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Created"].Value.Substring(0, 10),
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value,
intro,
"",
"",
""
);
listToJson.Add(paramsRcu);
nbArticleAffiche++;
break;
}
}
Response.Write("{\"totalCount\":\"" + nbArticleAffiche + "\", \"results\":" + JsonConvert.SerializeObject(listToJson) + "}");
}
catch(Exception )
{
Response.Write("[" + "{\"text\":\"Une erreur s'est produite!\", \"leaf\": true, \"iconCls\": \"\"}" + "]");
}
la fenêtre s'affiche après le chargement des appels des fonctions c# en ext-js.
Merci de ta réponse rapide
@+
Amicalement,
Khaled.
voici le code que j'utilise:
Citation :
try
{
//connexion à la BDD metadico
ConnectBDD cc = new ConnectBDD();
ConnectBDD.oSQLConn.Open();
DataSet ds = new DataSet();
//Paramétres d'affichage des actualités projets
string query = "SELECT valeurParametre FROM Parametre WHERE idParametre ='1';";
Data = new SqlDataAdapter(query, ConnectBDD.oSQLConn);
Data.Fill(ds, "wws_customers");
loRow = ds.Tables["wws_customers"].Rows[0];
int id_cat = Convert.ToInt32(loRow["valeurParametre"]);
loRow = ds.Tables["wws_customers"].Rows[0];
int nb = Convert.ToInt32(loRow["valeurParametre"]);
int nbArticleAffiche = 0;
SPLists.Lists spLists = new SPLists.Lists();
spLists.Url = "http://vmspprod:25401/_vti_bin/Lists.asmx";
spLists.Credentials = new System.Net.NetworkCredential("administrateur", "pass","");
XmlNode list = spLists.GetListItems("presentationAccueil",null,null,null,null,null,null);
string aa = list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value;
for (int i = 0; i < list.ChildNodes[1].ChildNodes.Count; i++)
{
if (list.ChildNodes[1].ChildNodes.Attributes != null)
{
urlIntranet = WebConfigurationManager.AppSettings["urlIntranet"];
string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
paramsRcu = new ParamRecu(list.ChildNodes[1].ChildNodes[1].Attributes["ows_ID"].Value,
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Created"].Value.Substring(0, 10),
list.ChildNodes[1].ChildNodes[1].Attributes["ows_Title"].Value,
intro,
"",
"",
""
);
listToJson.Add(paramsRcu);
nbArticleAffiche++;
break;
}
}
Response.Write("{\"totalCount\":\"" + nbArticleAffiche + "\", \"results\":" + JsonConvert.SerializeObject(listToJson) + "}");
}
catch(Exception )
{
Response.Write("[" + "{\"text\":\"Une erreur s'est produite!\", \"leaf\": true, \"iconCls\": \"\"}" + "]");
}
la fenêtre s'affiche après le chargement des appels des fonctions c# en ext-js.
Merci de ta réponse rapide
@+
Amicalement,
Khaled.
Je te remercie de ta réponse.
Je pense pas que le problème vient de Ext-js, je récupère une task seulement.
Cette fenêtre s'affiche une fois que le serveur a exécuté et retourné les résultats de toutes les requêtes.
Peux tu posté un exemple qui tourne correctement chez toi?
Concernant sharepoint, je suis en mode authentification windows et je n'ai pas celui des formulaires.
Je vais essayer de réimporter les références Web!
Merci encore.
Bonne soirée.
Je pense pas que le problème vient de Ext-js, je récupère une task seulement.
Cette fenêtre s'affiche une fois que le serveur a exécuté et retourné les résultats de toutes les requêtes.
Peux tu posté un exemple qui tourne correctement chez toi?
Concernant sharepoint, je suis en mode authentification windows et je n'ai pas celui des formulaires.
Je vais essayer de réimporter les références Web!
Merci encore.
Bonne soirée.
Voilà un exemple :
var lists = new Lists
{
Url = "http://sps/sites/toto/_vti_bin/Lists.asmx",
Credentials = CredentialCache.DefaultCredentials,
PreAuthenticate = true,
};
try
{
XmlNode listCollection = lists.GetListCollection();
Console.WriteLine("Lists successfully retrieved");
}
catch (Exception ex)
{
Console.WriteLine("Error while retrieving lists: " + ex.Message);
Console.ReadLine();
return;
}
Bonjour,
J'ai trouvé d'où ça vient le problème.
quand je récupère un article depuis une liste je recupère des images aussi, et dans mon code je rajoute à la balise image l'adresse de mon site sharepoint.
string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
Dans l'onglet Réseau de mon firebug, j'ai l'erreur suivante 401 Unauthorized pour récupérer cette image à l'adresse http://vmspprod:25401/Images/logo.jpg
Donc c'est quand j'utilise l'urlIntranet que la fenêtre s'affiche.
Est ce qu'il y a un moyen de garder mes identifiants? ou existe-il un webService pour les images?
Merci pour ton aide.
Bonne journée.
Amicalement,
Khaled.
J'ai trouvé d'où ça vient le problème.
quand je récupère un article depuis une liste je recupère des images aussi, et dans mon code je rajoute à la balise image l'adresse de mon site sharepoint.
Citation :
urlIntranet = WebConfigurationManager.AppSettings["urlIntranet"];//=http://vmspprod:25401/string intro = list.ChildNodes[1].ChildNodes[1].Attributes["ows_intro"].Value.ToString().Replace("src=\"/", "src=\"" + urlIntranet);
Dans l'onglet Réseau de mon firebug, j'ai l'erreur suivante 401 Unauthorized pour récupérer cette image à l'adresse http://vmspprod:25401/Images/logo.jpg
Donc c'est quand j'utilise l'urlIntranet que la fenêtre s'affiche.
Est ce qu'il y a un moyen de garder mes identifiants? ou existe-il un webService pour les images?
Merci pour ton aide.
Bonne journée.
Amicalement,
Khaled.
Salut,
Je n'ai jamais essayé de récupérer des images depuis un site SharePoint.
Tu as la liste de tous les Web Services ici : http://msdn.microsoft.com/en-us/library/ms479390%28offi...
Mais il ne me semble pas qu'il y en ait un pour ce que tu veux faire.
Essaie de voir si tu peux pas faire une WebRequest pour récupérer l'image plutôt, vu que tu peux passer des Credentials.
Je n'ai jamais essayé de récupérer des images depuis un site SharePoint.
Tu as la liste de tous les Web Services ici : http://msdn.microsoft.com/en-us/library/ms479390%28offi...
Mais il ne me semble pas qu'il y en ait un pour ce que tu veux faire.
Essaie de voir si tu peux pas faire une WebRequest pour récupérer l'image plutôt, vu que tu peux passer des Credentials.
Bonjour,
Merci pour toutes tes réponses.
pour les images j'ai autorisé l'accès anonyme sur ce dossier.(en attendant de trouver la vraie solution)
J'aurais besoin d'afficher des documents pdf dans mon appli, je vais creuser la piste du webRequest ou webClient.
Merci encore de tes réponses.
bon journée.
Amicalement,
Khaled.
Merci pour toutes tes réponses.
pour les images j'ai autorisé l'accès anonyme sur ce dossier.(en attendant de trouver la vraie solution)
J'aurais besoin d'afficher des documents pdf dans mon appli, je vais creuser la piste du webRequest ou webClient.
Merci encore de tes réponses.
bon journée.
Amicalement,
Khaled.
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumLivebox connexion ethernet mais pas internet
- ForumProbleme connexion internet freebox
- ForumProblème de connexion internet livebox
- ForumProbleme connexion sans fil livebox
- ForumRalentissement de ma connexion livebox orang
- ForumConnexion via alicebox ethernet
- ForumProbleme connexion internet lente
- solutionsConnexion reseau ethernet freebox inexistant
- ForumProbleme connexion internet, livebox
- ForumConnexion extremement ralentie
- Voir plus