2010-07-20 37 views
0

以下是该场景: 我们有一个开启了匿名访问的外部SharePoint实例。我们希望文档库向公众开放。我们不希望自定义列表打开。这很简单,可以配置。使用匿名访问从ASP.Net Web应用程序中以命名用户的身份访问SharePoint API

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

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

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

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

SPContext为空。

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

SPSite site = new SPSite(URL,token); ...做用户的东西。

RunWithElevatedPrivileges也失败。

请帮忙!

回答

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就此事。

+0

不在2010年。我们在2007年。该应用程序将与SharePoint在同一个框中,这就是我们为什么要使用该API的原因。 以上代码在第一行中引发的对象引用未设置为对象错误的实例。 – SPCoder 2010-07-20 18:55:16

+0

根据执行代码的方式,可能不会设置SPContext。您可能需要根据您要加载的网址获取对网站集的引用。 – 2010-07-20 19:57:13

相关问题