Error updating SPPersistedObject from the web part

I wrote two functions in SharePoint 2007. One of them is at the Site level, and it basically adds the web part to the site collection where it is activated. This assembly of functions is deployed in the bin directory. Secondly, this is a realm with domains, which is my custom SPPersistedObject and is deployed in Central Administration. The assembly is added to the GAC.

From the web part, I need to update my custom object. In most cases, this works fine. But on some servers that follow domain admin rights, http://technet.microsoft.com/en-us/library/cc263445.aspx 'I get the following error

System.Security.SecurityException: Access denied. at Microsoft.SharePoint.Administration.SPPersistedObject.Update () in MyWebPart. <> c__DisplayClass1.b__0 () in Microsoft.SharePoint.SPSecurity.CodeToRunElevatedWrapper (State Object) in Microsoft.SharePoint.SPSecurity <. > C__DisplayClass4.b__2 () in Microsoft.SharePoint.Utilities.SecurityContext.RunAsProcess (CodeToRunElevated secureCode) with Microsoft.SharePoint.SPSecurity.RunWithElevatedPrivileges (WaitCallback secureCode, Object param) with Microsoft.SharePoint.SPSecurity.RunWithWRuleWunitRunWithWRuleWunitRunWithWroteWreWith RenderWebPart (HtmlTextWriter writer) Build zone that failed: MyComputer

Do I need to set any CAS permissions or policies to prevent this error?

CAS -. - .

<CodeAccessSecurity>
    <PolicyItem>
      <PermissionSet class="NamedPermissionSet" version="1" Name="MyPermission" Description="Permission set for my solution">
        <IPermission class="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Level="Medium"   />
        <IPermission class="System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
        <IPermission class="System.Security.Permissions.EnvironmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true" />
        <IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="AllFlags" />
        <IPermission class="Microsoft.SharePoint.Security.WebPartPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" Connections="true"  />
        <IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"  version="1" ObjectModel="true" UnsafeSaveOnGet="true" Impersonate="true"/>
        <IPermission class="System.Net.WebPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Unrestricted="true">
          <ConnectAccess>
            <URI uri="$OriginHost$"/>
            <URI uri="http://.*\.xyz\.com/.*"/>
          </ConnectAccess>
        </IPermission>
      </PermissionSet>
      <Assemblies>
        <Assembly Name="MyWebPart" Version="1.0.0.0" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100df0e85cb8c660241cd3225eb653a590b91303ddbd37f8f1e661d2dffb840a258b899d6bacbbc55d03768d5ea0260ee4c8341fd447d7200abdb74b837733c3f756833e169cae803aef808530dd3ddad953a49492faee3eeba6f0dba66b0d66f1f9ca5266c69dcb799ed364db5e9e6ebcd4e81fb27365de962cbe6e7e7fba300dc"/>
      </Assemblies>
    </PolicyItem>
  </CodeAccessSecurity>

, .

,

+3
2

,

, , , SPPersistedObject - - SharePoint. , - , ( ). "" , IIS.

, , :

  • . .

  • , ( ) .

" "... .

, "sweep", . ( , -), , , .. , , , .

, , Feature, CodePlex (http://blobcachefarmflush.codeplex.com/SourceControl/changeset/view/53851#797787). "" SPWebApplication, . , RootWeb. , , .

, !

+6
class MySett : SPPersistedObject
{
    //...
    protected override bool HasAdditionalUpdateAccess() { return true; }
}
+2

Source: https://habr.com/ru/post/1712930/


All Articles