文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>调用SPFarm.Update更新Farm的属性包时,出现Access denied

调用SPFarm.Update更新Farm的属性包时,出现Access denied

时间:2011-06-09  来源:shukun

最近在写一个SharePoint 2010 的Application page时,想把一些数据存在放到SPFarm.Properties[“key”],但是再调用SPFarm.Update时,总是出现Access denied的错误:

System.Security.SecurityException: Access denied.
at Microsoft.SharePoint.Administration.SPPersistedObject.BaseUpdate()
at Microsoft.SharePoint.Administration.SPFarm.Update()
at MyCompany.MyProduct.Business.Config.SetPropertyValue(IPropertyBag propertyBag, String propertyName, String value)

 

即使提升的杼也一样。

 

经过调查发现,如果这个页面通过管理中心的URL来访问时,一切正常。但如果是通过其它的web app的URL来访问,就会出现这个问题。初步判断SPFarm.Update仅仅能在CA上运行。google后发现这篇文章:http://stackoverflow.com/questions/3958548/securityexception-when-accessing-spfarm-propertybag-from-wcf-service-hosted-in-sh,印证了我的判断。

 

我个人最后的解决方案:开发了一个自定义的web service部署到CA,然后通过调用http://CA site URL:port/_vti_bin/updateFarm.asmx来解决这个问题。获取CA 的URL可以使用如下代码:

         /// <summary>
        /// get CA site url
        /// </summary>
        /// <returns></returns>
        public static string GetCASiteURL()
        {

            var caapp = SPAdministrationWebApplication.Local;

            return  caapp.Sites[0].Url;
        }

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载