以下是该方案: 我们有一个启用了匿名访问的外部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也失败了。
请帮忙!
答案 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。