我有一个要求,我需要能够从位于我的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应用程序的应用程序池,但却无法找到这样做的方法......或者将进程标识更改为有权访问的文件
感谢收到任何想法,想法或解决方案!
菲尔
答案 0 :(得分:6)
您应该尝试使用List Web服务来访问列表项。并在连接到Web服务之前设置凭据。
答案 1 :(得分:1)
您是否经常尝试windows impersonation?您应该可以模拟服务帐户并以此方式访问列表。
答案 2 :(得分:1)
问题是CA应用程序池和WFE应用程序池很可能在不同的帐户下运行,这是最好的做法,尽管在您是开发人员时很烦人。您无法使用SPSecurity.RunWithElevatedPrivileges来解决此问题。
通过提供安全策略,您可以为运行WFE Web应用程序的应用程序池提供与管理中心应用程序池相同的凭据。
可以使用以下服务帐户屏幕完成此操作:
的http:///_admin/FarmCredentialManagement.aspx
如果您沿着网络服务路线走下去,您可能想要自己定位自己的网络服务,以防止通过HTTP进行过多的“聊天”。