使用匿名访问从ASP.Net Web应用程序作为命名用户访问SharePoint API

时间:2010-07-20 17:55:37

标签: sharepoint api

以下是该方案: 我们有一个启用了匿名访问的外部SharePoint实例。我们希望文档库向公众开放。我们不希望打开自定义列表。这很简单,可以配置。

现在我们要使用这些列表来创建一个有吸引力的外部ASP.Net Web应用程序。此网站也需要匿名启用。

问题是我们需要从Web应用程序访问这些列表而不打开它们进行匿名访问。

我们希望使用API​​(而非Web服务),因为它将托管在相同的框中。

到目前为止,我们无法创建具有相应访问权限的SPUser来打开列表。

SPContext为空。

这样做也失败了: SPSite temp =新SPSite(URL); SPUserToken token = temp.SystemAccount.UserToken;

SPSite site = new SPSite(URL,token); ......以用户身份做事。

RunWithElevatedPrivileges也失败了。

请帮忙!

1 个答案:

答案 0 :(得分:0)

您是否有机会使用SharePoint 2010?他们有更多选项可供其他应用程序访问。如果不是2010年,您将不得不使用某种Web服务,无论是OTB还是您自己的Web服务,它封装了您的逻辑,因为SP OM不会在非SharePoint机器上运行。

独立于此,您可以尝试从应用程序池中获取SPToken。基本上

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

Daniel Larson是使用RunWithElevatedPriveleges这种方法的重要支持者。查看他关于此事的blog post