2010-07-20 3 views
0

Voici le scénario: Nous avons une instance SharePoint externe avec un accès anonyme activé. Nous voulons que les bibliothèques de documents soient ouvertes au public. Nous ne voulons pas que les listes personnalisées soient ouvertes. C'était assez simple à configurer.Accéder à l'API SharePoint en tant qu'utilisateur nommé à partir d'une application Web ASP.Net à l'aide de l'accès anonyme

Maintenant, nous voulons utiliser ces listes pour créer une application Web ASP.Net externe attrayante. Ce site web devra également être anonyme.

Le problème est que nous devons accéder à ces listes à partir de l'application Web sans les ouvrir à un accès anonyme.

Nous voulons utiliser l'API (pas les services Web), car elle sera hébergée dans les mêmes boîtes.

Jusqu'à présent, nous n'avons pas été en mesure de créer un SPUser avec l'accès approprié pour ouvrir les listes.

SPContext est vide. Cela échoue aussi: SPSite temp = new SPSite (URL); SPUserToken token = temp.SystemAccount.UserToken;

Site SPSite = nouveau SPSite (URL, jeton); ... faire des choses en tant qu'utilisateur.

RunWithElevatedPrivileges échoue également.

Aidez s'il vous plaît!

Répondre

0

Avez-vous des chances d'utiliser SharePoint 2010? Ils ont plus d'options disponibles pour accéder à partir d'autres applications. Si ce n'est pas en 2010, vous allez devoir utiliser un service web quelconque, soit le service OTB ou votre propre service Web qui encapsule votre logique puisque le SP OM ne fonctionnera pas sur une boîte non SharePoint. Indépendamment de cela, vous pouvez essayer d'obtenir le SPToken à partir du pool d'applications. Essentiellement

SPUserToken sysToken = SPContext.Current.Site.SystemAccount.UserToken; 
using(var systemSite = new SPSite(SPContext.Current.Site.ID, sysToken)) 

Daniel Larson est un grand partisan de cette approche sur l'utilisation RunWithElevatedPriveleges. Consultez son blog post sur le sujet.

+0

Pas sur 2010. Nous sommes sur 2007. L'application sera sur la même case que SharePoint, c'est pourquoi nous voulions utiliser l'API. Le code ci-dessus renvoie une référence d'objet non définie sur une instance d'une erreur d'objet sur la première ligne. – SPCoder

+0

Selon la façon dont vous exécutez le code, le SPContext peut ne pas être défini. Vous devrez peut-être obtenir une référence à la collection de sites en fonction de l'URL que vous souhaitez charger. –

Questions connexes