zoukankan      html  css  js  c++  java
  • 调用SPFarm.Update更新Farm的属性包时,出现Access denied

    最近在写一个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;
            }

  • 相关阅读:
    C#之时间统计
    Unity之屏幕画线
    Unity之坐标转换
    Unity3d之按键
    Unity3d之截图
    [Windows]A盘凭空消失
    函数的多类型传值
    isdigit()
    函数的返回值
    locals()
  • 原文地址:https://www.cnblogs.com/ITHelper/p/2075926.html
Copyright © 2011-2022 走看看