跨应用程序池的SharePoint列表访问

时间:2009-05-15 11:32:24

标签: c# sharepoint web-applications application-pool elevated-privileges

我有一个要求,我需要能够从位于我的Web前端(WFE)的应用程序页面访问位于管理中心的列表。我遇到的问题是我的WFE的应用程序池用户无法访问SharePoint_AdminContent数据库,所以我被拒绝访问,他们都有自己的应用程序池

在日志中显示以下内容:

  
      
  • 恢复处理身份
  •   
  • SqlConnection.Open之前的当前用户:名称:   SharePointDemo \ SPContentPool SID:   S-1-5-20 ImpersonationLevel:无
  •   
  • SqlConnection.Open之后的当前用户:名称:   SharePointDemo \ SPContentPool:S-1-5-20   ImpersonationLevel:无
  •   
  • 用户“SPContentPool”的SQL数据库权限不足   在数据库中   SQL Server实例'SPNSQL'上的'SharePoint_AdminContent_53169fb3-137c-44b2-b90e-961b656e4275'。   来自SQL的其他错误信息   服务器包含在下面。执行   该对象的权限被拒绝   'proc_EnumLists',数据库   'SharePoint_AdminContent_53169fb3-137c-44B2-b90e-961b656e4275',   schema'dbo'。
  •   

我尝试使用SharePoint \ System用户令牌尝试运行高级特权以及尝试使用Daniel Larsons方法(http://daniellarson.spaces.live.com/blog/cns!D3543C5837291E93!1919.entry),但它似乎只提升到应用程序池的高度。

我希望有一种简单的方法可以模拟管理Web应用程序的应用程序池,但却无法找到这样做的方法......或者将进程标识更改为有权访问的文件

感谢收到任何想法,想法或解决方案!

菲尔

3 个答案:

答案 0 :(得分:6)

您应该尝试使用List Web服务来访问列表项。并在连接到Web服务之前设置凭据。

答案 1 :(得分:1)

您是否经常尝试windows impersonation?您应该可以模拟服务帐户并以此方式访问列表。

答案 2 :(得分:1)

问题是CA应用程序池和WFE应用程序池很可能在不同的帐户下运行,这是最好的做法,尽管在您是开发人员时很烦人。您无法使用SPSecurity.RunWithElevatedPrivileges来解决此问题。

通过提供安全策略,您可以为运行WFE Web应用程序的应用程序池提供与管理中心应用程序池相同的凭据。

可以使用以下服务帐户屏幕完成此操作:

的http:///_admin/FarmCredentialManagement.aspx

如果您沿着网络服务路线走下去,您可能想要自己定位自己的网络服务,以防止通过HTTP进行过多的“聊天”。