[SharePoint] Crear/Borrar Scope de sitios programaticamente

En versiones anteriores de SharePoint para hacer esto hacíamos uso de la clase SearchContext que ahora en 2010 está obsoleta:

SearchContext is deprecated.

SearchContext is deprecated and shouldn’t be used as an example on a SP 2010 class.

Para crear un Scope sobre un sitio de SharePoint podemos hacer uso del siguiente código:

private void CreateScope(string title, SPWeb web, SPSite site)

{

    var remoteScopes = new RemoteScopes(SPServiceContext.GetContext(site));

 

    var allScopes = remoteScopes.AllScopes;

    var scope = allScopes.Cast<Scope>().SingleOrDefault(s => s.Name == title);

    

    if (scope != null)

        scope.Delete();

 

    var newScope = remoteScopes.AllScopes.Create(title, title, new Uri(web.Url), true, "results.aspx",

                                                 ScopeCompilationType.AlwaysCompile);

    newScope.Rules.CreateUrlRule(ScopeRuleFilterBehavior.Include, UrlScopeRuleType.Folder, web.Url);

 

    remoteScopes.StartCompilation();

}

 
Para borrar:
 
private void RemoveScope(string title, SPSite site)

{

    var remoteScopes = new RemoteScopes(SPServiceContext.GetContext(site));

 

    var allScopes = remoteScopes.AllScopes;

    var scope = allScopes.Cast<Scope>().SingleOrDefault(s => s.Name == title);

 

    if (scope != null)

        scope.Delete();

}

Estos métodos los podemos utilizar en nuestro receiver Winking smile

Un saludo

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *