Compartir a través de


Fragmento de código: Agregar una entrada de control de acceso a un MetadataObject con el modelo de objetos de administración

Última modificación: viernes, 07 de mayo de 2010

Hace referencia a: SharePoint Server 2010

En este artículo
Descripción
Requisitos previos
Para usar este ejemplo

Descripción

En el siguiente ejemplo de código se muestra cómo agregar mediante programación una entrada de control de acceso a un objeto de metadatos (modelo de este ejemplo) con el modelo de objetos de administración de BDC en el servidor.

Nota

Puede usar el modelo de objetos de cliente de administración de BDC para crear un tipo de contenido externo de forma similar en el cliente.

Requisitos previos

  • Microsoft SharePoint Server 2010 o Microsoft SharePoint Foundation 2010 en el servidor.

  • Microsoft Visual Studio y Microsoft .NET Framework 3.5 en el equipo cliente.

  • Al menos un tipo de contenido externo registrado en el repositorio de metadatos de BDC.

Para usar este ejemplo

  1. Inicie Visual Studio y cree un proyecto de aplicación de consola C#. Seleccione .NET Framework 3.5 al crear el proyecto.

  2. En el menú Ver, haga clic en Páginas de propiedades para que aparezcan las propiedades del proyecto.

  3. En la ficha Compilación, para el Destino de la plataforma, seleccione Any CPU.

  4. Cierre la ventana de propiedades del proyecto.

  5. En el Explorador de soluciones, en Referencias, quite todas las referencias del proyecto excepto System y System.Core.

  6. Agregue las siguientes referencias al proyecto:

    1. Microsoft.BusinessData

    2. Microsoft.SharePoint

    3. System.Web

  7. Reemplace el código generado automáticamente en Program.cs con el código que aparece al final de este procedimiento.

  8. Reemplace el valor de cadena "<siteUrl>" con una dirección URL de sitio de SharePoint válida.

  9. Reemplace "<EntityNamespace>" y "<EntityName>" con el nombre de la entidad y el espacio de nombres de una entidad existente.

  10. Guarde el proyecto.

  11. Compile y ejecute el proyecto.

using System;
using Microsoft.BusinessData.Infrastructure;
using Microsoft.BusinessData.MetadataModel;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.BusinessData.Administration;
using Microsoft.SharePoint.BusinessData.Infrastructure;
using Microsoft.SharePoint.BusinessData.SharedService;

namespace Microsoft.SDK.SharePoint.Samples.Bdc.AddAccessControlEntry
{
    class Program
    {
        static void Main(string[] args)
        {
            // Get the Catalog for the SharePoint site.
            BdcService service =
                SPFarm.Local.Services.GetValue<BdcService>(
                String.Empty);
            SPSite site = new SPSite("<siteUrl>");
            SPServiceContext context = SPServiceContext.GetContext(site);

            AdministrationMetadataCatalog catalog =
                service.GetAdministrationMetadataCatalog(context);

            // Retrieve an existing Entity.
            Entity entity = catalog.GetEntity(
                "<EntityNamespace>", "<EntityName>");

            // Add Execute permissions for a specified user to the Entity.
            Console.WriteLine(
                "Type the user account to add Execute Rights Access: ");
            string userAccount = Console.ReadLine();

            IAccessControlList acl = entity.GetAccessControlList();
            Console.WriteLine(
                "Adding " + userAccount + 
                "with Execute and Set Permission rights to entity: " + entity.Name);
            IAccessControlEntry ace = new IndividualAccessControlEntry(
                BdcAccessControlList.TranslateFriendlyStringToEncodedClaim(
                userAccount),
                BdcRights.Execute | BdcRights.SetPermissions);
            acl.Add(ace);
            entity.SetAccessControlList(acl);
            // Copy entity permissions to its methods so that they can 
            // be executed by the added user.
            entity.CopyAclAcrossChildren();

            // Retrieve the LobSystem for this entity and add the user 
            // to it as well. This will allow the added user to access 
            // the external source for retrieving data.
            LobSystem lobSystem = entity.LobSystem;
            IAccessControlList lobSystemAcl = 
                lobSystem.GetAccessControlList();
            lobSystemAcl.Add(ace);
            lobSystem.SetAccessControlList(lobSystemAcl);
        }

    }
}

Vea también

Referencia

BdcService

Services

GetAdministrationMetadataCatalog(SPServiceContext)

AdministrationMetadataCatalog

GetEntity(String, String)

Entity

GetAccessControlList()

SetAccessControlList(IAccessControlList)

CopyAclAcrossChildrenForSetting(String)

IAccessControlList

IndividualAccessControlEntry

IAccessControlEntry

LobSystem