lunes, 17 de diciembre de 2012

Tips Info #86 Sharepoint 2010

1-Contenido condicional para usuarios anónimos y logueados

Una posibilidad es usar el control SPSecurityControl que permite mostrar contenido condicional para los usuarios dependiendo de sus permisos.

Este control no permite mostrar contenido sólo para usuarios anónimos.Para ello utilizaremos el control LoginView.

<asp:LoginView runat="server">
     <AnonymousTemplate>
        <span style="font-family: Arial; font-size: 10pt;">Bienvenido, Invitado
            <asp:LoginStatus ID="LoginStatusUsuarioAnonimo" runat="Server" />
        </span>
    </AnonymousTemplate>
    <LoggedInTemplate>
        Bienvenido,
        <asp:LoginName ID="LoginNameUsuarioLogueado" runat="Server" />
        <asp:LoginStatus ID="LoginStatusUsuarioLogueado" runat="Server" />
    </LoggedInTemplate>
</asp:LoginView>

El control LoginName mostrará el nombre del usuario logueado, y en el caso de usuarios anónimos no mostrará nada.

El control LoginStatus mostrará un link de Log Out para usuarios autenticados y un link de Log In para usuarios anónimos.

2-Formula para validar un email dentro de una columna de Sharepoint

Dos posibles fórmulas:

FORMULA 1

=(LEN(LEFT([Email],FIND("@",[Email])-1))>0)
+(LEN(RIGHT([Email],LEN([Email])-FIND(".",[Email],FIND("@",[Email]))))>0)
+(LEN(MID([Email],FIND("@",[Email])+1,FIND(".",[Email],FIND("@",[Email]))-FIND("@",[Email])-1))>0)
+(ISERROR(FIND(" ",[Email]))=TRUE)
=4

FORMULA 2

=IF(
  OR(
    ISERROR(FIND("@",Email)),
    ISERROR(FIND(".",Email,FIND("@",Email)))
  ),
  FALSE,
  AND(
    LEN(LEFT(Email,FIND("@",Email)-1))>0,
    LEN(RIGHT(Email,LEN(Email)-FIND(".",Email,FIND("@",Email))))>0,
    LEN(MID(Email,FIND("@",Email)+1,FIND(".",Email,FIND("@",Email))-FIND("@",Email)-1))>0,
    (ISERROR(FIND(" ",TRIM(Email))))
  )
)

3-Renombrar web application mediante powershell

$wapp = Get-SPWebApplication "SharePoint - 80"
$wapp.Name = "Intranet -80"
$wapp.Update()
Para verificar si se actualizó de forma correcta ejecute lo siguiente:
Get-SPWebApplication "Intranet -80"

4-Error al utilizar server object: The web server process that was being debugged has been terminated by Internet Information Services (IIS). This can be avoided by configuring Application Pool ping setting in IIS. See help for further details.

Por ejemplo al utilizar la siguiente línea de código SPListItemCollection collListItemsSrc = oList.GetItems(oView) , nos puede lanzar el error previamente definido.
Esto se debe a que el tamaño de la configuración “The maximum unresponsive ping time” es insuficiente. El default es de 90 segundos. Puedes aumentar el tiempo o deshabilitar el Ping Enabled.
image

5-Propiedad AllowEveryoneViewItems  de las librerias/listas


Esta propiedad permite acceder de forma directa a los documentos de una librería o a los attachments de una lista. Esta propiedad sólo funciona cuando los usuarios navegan directamente a un archivo a través del navegador, y no tiene ningún efecto sobre el resto de la interfaz de usuario o el modelo de objetos.


Esta propiedad es útil para trabajar con usuarios anónimos.


$web = Get-SPWeb -Identity http://url_sitio
$list = $web.Lists.TryGetList("titulo lista");
$list.AllowEveryoneViewItems = $true
$list.Update()

domingo, 16 de diciembre de 2012

Tips Info #3 Sharepoint 2013

1-Error page en Sharepoint 2013

Al activar la feature SharePoint Publishing feature, se agrega una página llamada PageNotFoundError.aspx y se encuentra disponible en la librería Pages

New-Picture-37

Para poder agregar la página, se debe agregar el content type “Error Page“. Este content type se basa en el content type Pages

 

New-Picture-38

New-Picture-40

2-Agregar una página de Sharepoint 2013 en un frame

Sharepoint 2013 agrega un header X-Frame options para prevenir de ataques clickjacking

Al agregar una página de Sharepoint 2013 en un frame, puede lanzarnos el siguiente mensaje: "This content cannot be displayed in a frame"

Cada respuesta HTTP envía una X-Frame-Options: header SAMEORIGIN, lo que indica que esta página no debe ser cargada en un IFRAME,  si la página que la hostea está en un dominio diferente de la página de SharePoint.

Por lo tanto, páginas externas llamadas desde Sharepoint no se verán afectadas, lo mismo que páginas de Sharepoint del mismo dominio que la actual. Pero páginas de Sharepoint 2013 llamadas desde otro dominio dentro de un frame nos lanzará el siguiente mensaje: "This content cannot be displayed in a frame"

Para solucionar este problema se puede agregar el siguiente web part: <WebPartPages:AllowFraming runat="server" />

Este webpart NO agregar el header de X-Frame-Options. Al crear páginas desde Visual Studio o cualquier herramienta de desarrollo de Microsoft, agregará de forma automática este webpart.

3-Modelo de Apps en Sharepoint 2013

IC599129

4-Error:  “The file reached the maximum download limit warnings. Check that the full text of the document can be meaningfully crawled”.

Abre el SharePoint Management Shell

$searchapp = Get-SPEnterpriseSearchServiceApplication
$searchapp.GetProperty("MaxDownloadSize") # el valor default es 64MB
$searchapp.SetProperty("MaxDownloadSize", 128) #128 es un valor adecuado para un límite de download
$searchapp.Update()

Reinciar el servicio OSearch14
Otra propiedad útil es MaxGrowFactor (por default 4), esto llevará a indexar 256MB (64 x 4), al igual que MaxDownloadSizexMaxGrowFactor.

5-Property Bag Values enSharePoint 2013 – Search

En la nueva versión de Sharepoint 2013, se puede agregar metadata a los sites/listas mediante la propiedad Bag y que esa metadata esté disponible en los resultados de búsqueda.

$web = Get-SPWeb http://websiteSharepoint
$web.AllowUnsafeUpdates = true
$web.AllProperties["PropiedadWeb"] = "valorWeb"
$web.IndexedPropertyKeys.Add("PropiedadWeb")
$web.Update()
$web.AllowUnsafeUpdates = false

Lo mismo se puede hacer para listas

$list = $web.Lists["Tareas"]
$folder = $list.RootFolder
$folder.Properties["PropiedadTareas"] = "valorTareas"
$list.AllowUnsafeUpdates = true
$folder.Update()
$list.IndexedRootFolderPropertyKeys.Add("PropiedadTareas")
$list.Update()
$list.AllowUnsafeUpdates = false

Una vez que se configuró las propiedades, se deberá hacer un full crawl.

Si se busca valorWeb o valorTareas, nos devolverá el site y lista respectivamente.

sábado, 15 de diciembre de 2012

Tips Info #85 Sharepoint 2010

1-Script para obtener el tamaño, cantidad de usuarios y url de todos los sites collections mediante powershell

Get-SPSiteAdministration -Limit All | select Url, @{label = "Size";Ex = {$_.DiskUsed/1MB}}, UsersCount | Sort-Object -Descending -Property "Size" | ConvertTo-Html -title "Site Collections" | Set-Content sitecollectionsinfo.html

2-Obtener las versiones de los documentos vía querystring – powershell – client object

Via querystring

Se puede usar el parámetro IncludeVersions=TRUE , por ejemplo:

http://sitecollection/sites/demo/docs/Forms/AllItems.aspx?IncludeVersions=TRUE

Vía powershell

$SPWeb = Get-SPWeb http://nombredelsite
foreach($List in $SPWeb.Lists)
{
   $ItemsColl = $List.Items
   foreach ($item in $ItemsColl)
    {
      foreach($version in $item.Versions)
        {
Write-Host $version.VersionLabel
        }
    }
}
$SPWeb.Dispose()

Vía client object

public void GetVersions()
{
    ClientContext clientContext = new ClientContext("http://website_url");
    Web site = clientContext.Web;
    clientContext.Load(site);
    clientContext.ExecuteQuery();

    File file = site.GetFileByServerRelativeUrl("/Libreria/documento.pdf");
    clientContext.Load(file);
    clientContext.ExecuteQuery();

    ListItem currentItem = file.ListItemAllFields;
    clientContext.Load(currentItem);
    clientContext.ExecuteQuery();

    FileVersionCollection versions = file.Versions;
    clientContext.Load(versions);
    clientContext.ExecuteQuery();

    if (versions != null)
    {
        foreach(FileVersion _version in versions)
        {
            Console.WriteLine("Version : {0}",_version.VersionLabel);
        }
    }
}

3-Script de SQL para saber el “Database growth rate” de las bases de contenido

Creo el store sobre la base de datos master

USE [master]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[sp_track_db_growth](@dbnameParam sysname = NULL)
AS
BEGIN
DECLARE @dbname sysname
-- Set the current DB, if dbname is not given input
SET @dbname = COALESCE(@dbnameParam, DB_NAME())
 
SELECT    CONVERT(char, backup_start_date, 111) AS [Date], --yyyy/mm/dd format
    CONVERT(char, backup_start_date, 108) AS [Time],
    @dbname AS [Database Name], [filegroup_name] AS [Filegroup Name], logical_name AS [Logical Filename],
    physical_name AS [Physical Filename], CONVERT(numeric(20,4),file_size/1048576) AS [File Size (MB)],
    Growth AS [Growth Percentage (%)]
FROM
(
    SELECT    b.backup_start_date, a.backup_set_id, a.file_size, a.logical_name, a.[filegroup_name], a.physical_name,
        (
            SELECT    CONVERT(numeric(20,4),((a.file_size * 100.00)/i1.file_size)-100)
            FROM    msdb.dbo.backupfile i1
            WHERE     i1.backup_set_id =
                        (
                            SELECT    MAX(i2.backup_set_id)
                            FROM    msdb.dbo.backupfile i2 JOIN msdb.dbo.backupset i3
                                ON i2.backup_set_id = i3.backup_set_id
                            WHERE    i2.backup_set_id < a.backup_set_id AND
                                i2.file_type='D' AND
                                i3.database_name = @dbname AND
                                i2.logical_name = a.logical_name AND
                                i2.logical_name = i1.logical_name AND
                                i3.type = 'D'
                        ) AND
                i1.file_type = 'D'
        ) AS Growth
    FROM    msdb.dbo.backupfile a JOIN msdb.dbo.backupset b
        ON a.backup_set_id = b.backup_set_id
    WHERE    b.database_name = @dbname AND
        a.file_type = 'D' AND
        b.type = 'D'
       
) as Derived
WHERE (Growth <> 0.0) OR (Growth IS NULL)
ORDER BY 'File Size (MB)' desc
END

Ejecuto el store

exec sp_track_db_growth 'WSS_Content_XXXXX'

4-Custom 404 page en Sharepoint 2010 (not found page)

  • Crear una página llamada 404.html con tu editor html favorito
  • Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\LangID  donde LangID es lenguaje actual que estás usando. ej: 1033 para el inglés.
  • Copiar la página previamente creada a la carpeta. MI recomendación es subir el archivo en cada LangID que tengas definido.
  • Abrir una consola de powershell y ejecuta lo siguiente:

$webapp =Get-SPWebApplication http://<serverUrl>:<port>
$webapp.FileNotFoundPage = "404.html"
$webapp.update()

Para verificar ejecuta la siguiente consulta: (Get-SPWebApplication http://<serverUrl>:<port>).FileNotFoundPage

Y a continuación ejecuta una consulta vía navegador que genere un 404.

Posibles problemas:

  • No se muestra la página de error custom: hacer un recycle del app pool, o incluso mejor hacer un iisreset.

Otra posibilidad es setear la custom page vía el IIS:

http://www.ngpixel.com/2010/12/23/sharepoint-2010-custom-error-pages/

5-No se puede visualizar el icono de pdf en Sharepoint 2010

image

Para agregar el icono de pdf se deberá hacer lo siguiente:

Ir hasta C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14”) and then to TEMPLATE\IMAGES, y subir el icono de pdf.

6a012875706f1b970c0134873475df970c-800wi

Después se deberá editar el archivo DOCICON.XML dentro de la carpeta TEMPLATE\XML

6a012875706f1b970c013487347657970c-800wi

6a012875706f1b970c0133f4140cb7970b-800wi

A continuación has un iisreset en todos los frontends.

5-Links para hacer un signout de Sharepoint

/_layouts/closeConnection.aspx?loginasanotheruser=true

ó

/_layouts/signout.aspx

Variables/objectos/métodos útiles de javascript disponibles en Sharepoint

Muchas de estos métodos, objectos, variables son generados desde los archivos init.js, core.js , por lo cual es necesario que esté el link a los js anteriormente mencionados.

_spUserId

Esta variable guarda el ID del usuario logueado. Para obtener más información del usuario logueado con esta variable podemos usar el siguiente método definido en el siguiente link:

http://sharepointjavascript.wordpress.com/2011/09/18/accessing-user-profile-information-in-sharepoint-with-javascript-updated-version/

Ej: escribe en la barra de navegación el siguiente script: javascript:alert(_spUserId);

L_Menu_BaseUrl

La url base del site / subsite. Nos ayuda crear paths absolutos. Ej: document.location = L_Menu_BaseUrl + ‘lists/task/allitems.aspx’ //nos redirigue a Task List

L_Menu_LCID

El LCID del site actual. Útil para determinar el lenguaje del site. En este site (http://msdn.microsoft.com/en-US/goglobal/bb964664.aspx) podrán encontrar todos los LCID´s disponibles. Ej: 1033  (Inglés)

L_Menu_SiteTheme

El nombre del theme que se aplica al site. Ej: Lacquer. Si no tiene un theme aplicado, devolverá vacio.

_spPageContextInfo


Es un objecto que tiene muchas propiedades:
    a. webServerRelativeUrl (url relativa para la web actual. Ej: \u002fsites\u002fTestSite\u002WebSite)
    b. siteServerRelativeUrl (current site collection url. Ej: \u002fsites\u002fTestSite)
    c. webLanguage (Ej: 1033)
    d. currentLanguage (Ej: 1033)
    e. webUIVersion (Ej: 4)
    f. userId (Current user, mismo valor que _spUserId: ej: http://www.jbmurphy.com/2012/12/05/using-_sppagecontextinfo-ajax-and-samaccountname-to-show-a-hidden-item-in-a-sharepoint-page/)
    g. alertsEnabled (Si está habilitado las alertas para la página)
    h. allowSilverlightPrompt (Si se permite preguntar por silverlight o no. Ej: true)
    i. pageItemId (Guid del item actual)
    j. pageListId (Guid de la lista que contiene el item actual)
   

Ej: verificar si estoy en el root web del site collection
var siteUrl = _spPageContextInfo.siteServerRelativeUrl;
var webUrl = _spPageContextInfo.webServerRelativeUrl;
var isRootWeb = siteUrl == webUrl;

g_wsaSiteTemplateId
Informa sobre el current site template del site. Ej:  'BLOG#0'

JSRequest
Es un  objecto que nos permite tomar información de la página actual, más que nada los valores presentes en la url.

//Primero se debe llamar al método EnsureSetup
JSRequest.EnsureSetup();

var q = JSRequest.QueryString["itemId"]; //  "page.aspx?ItemId=5" nos devolverá 5
var f = JSRequest.FileName; // Ej: default.aspx
var p = JSRequest.PathName; // url relativa del servidor. Ej: "/website/pages/default.aspx"

_spBodyOnLoadFunctionNames
Array de de funciones de javascript que se ejecuta después de que el DOM esté completamente cargado. Si desea ejecutar su función una vez que la página esté completamente cargada, use este array. Por ejemplo _spBodyOnLoadFunctionNames.push ("MiFuncion");

function MiFuncion() {
   alert('Esta función se ejecutara en el evento onload de la  página');
}

browseris
Este objeto tiene varias propiedades para detectar el nombre del navegador, la versión, versión del sistema operativ.
Por ejemplo, si usted quiere saber si el navegador actual es Internet Explorer o no compruebe browseris.ie

g_ExtensionDefaultForRead

Un arreglo de extensiones de archivos que son siempre checked out como Read only. Ej: jpg, jpeg, bmp

g_ExtensionNotSupportCheckoutToLocal

Un arreglo de extensiones que no son permitidos hacer checkout localmente.Ej: aspx, ascx, cmd

GetUrlKeyValue()
Es una función de javascript que permite obtener parámetros de query string de la url del navegador o de una url pasada como parámetro.

alert(GetUrlKeyValue('query', false, 'www.demo.com?query=te%20st'));
Devolverá ‘te st’. Se especificó una url específica.

alert(GetUrlKeyValue('query', false));
Busca el valor del query string 'query' y nos devuelve el valor decodificado (parámetro false)

alert(GetUrlKeyValue('query'));
Busca el valor del query string 'query, sin decodificar.

escapeProperly
Esta función retorna un valor codificada
var valor = escapeProperly("hola mundo!!"); //valor = "hola%20mundo%21%21"

unescapeProperly

Esta función decodifica un string codificado
var valor = unescapeProperly("hola%20mundo%21%21"); //valor = "hola mundo!!"

STSHtmlEncode(htmlString)
Esta función codifica un texto html

var valor = STSHtmlEncode("<p>ejemplo texto</p>");
//valor = "&lt;p&gt;ejemplo texto&lt;/p&gt;"

TrimSpaces(str)
Remueve los espacios en blanco del principio y final.No remueve caracteres especiales tales como ‘\n’, \t’, para ello se puede usar TrimWhiteSpaces.

var valor = TrimSpaces("   Hola   Mundo!!    "); //valor = "Hola   Mundo!!"

LoginAsAnother(url, bUseSource)
Permite loguearse con otro nombre de usuario.Permite definir la url a donde se enviará el usuario después del login.

<a href="#" onclick="javascript:LoginAsAnother('\u002f_layouts\u002fAccessDenied.aspx?loginasanotheruser=true', 0)">Log on como otro usuario</a>

viernes, 14 de diciembre de 2012

Links útiles #13 Sharepoint 2013

1-Diseñador de workflows para Sharepoint 2013

http://blogs.technet.com/b/office_sp/archive/2012/12/11/introducci-243-n-al-nuevo-dise-241-ador-visual.aspx

http://blogs.technet.com/b/office_sp/archive/2012/12/11/c-243-mo-utilizar-el-dise-241-ador-visual-de-sharepoint-designer-2013-para-mover-los-flujos-de-trabajo-entre-sitios.aspx

2-Rastreos continuos (continuos crawl) en Sharepoint 2010

http://blogs.msdn.com/b/sharepoint_sp/archive/2012/12/11/191-c-243-mo-puedo-alcanzar-la-mejor-actualizaci-243-n-de-resultados-de-la-b-250-squeda-introduciendo-rastreos-continuos-de-sharepoint.aspx

3-Quick Step con Sharepoint 2013 y Designer 2013

http://blogs.technet.com/b/office_sp/archive/2012/12/11/c-243-mo-crear-un-paso-r-225-pido-y-una-acci-243-n-personalizada-para-iniciar-el-flujo-de-trabajo-de-sharepoint-2013.aspx

4-Llamar a un servicio REST desde Sharepoint Designer 2013

http://blogs.technet.com/b/office_sp/archive/2012/10/11/c-243-mo-trabajar-con-un-servicio-web-mediante-la-acci-243-n-llamar-al-servicio-web-http.aspx

5-Routing and Throttling de request en Sharepoint 2013

http://blogs.technet.com/b/speschka/archive/2012/09/14/working-with-request-manager-in-sharepoint-2013.aspx

6-SSL Sharepoint 2013

http://walisystemsinc.com/sharepoint/art/ssl_selfsigned_cert/Setup%20SSL%20in%20SharePoint%202013%20using%20Self-Signed%20Certificate.pdf

jueves, 13 de diciembre de 2012

Tips Info #2 Sharepoint 2013

1-Habilitar el botón “Conectar con Outlook”

Por default no está activado el botón, para activarlo tendrá que usar la opción “Agregar a sitios de Sharepoint”

image

image

image

2-Modificar la navegación global de un sitio de Sharepoint 2013

082212_1852_ModifytheTi1

$app = Get-SPWebApplication -Identity https://webapplication_url

$app.SuiteBarBrandingElementHtml = "<div class='ms-core-brandingText'>Christian azcón</div>"

$app.Update()

3-Setear theme a subsites que hereden del padre en Sharepoint 2013

$url = "http://url_sitecollection"
$site = Get-SPSite -Identity $url
 
foreach ($web in $site.AllWebs) {
  $web.ThemedCssFolderUrl = $site.RootWeb.ThemedCssFolderUrl
  $web.Update()
 
  $web.Dispose()
}
 
$site.Dispose();

4-Drag and drop en Sharepoint 2013: error "Exceeded the limit of number of files."

Sólo se pueden subir 100 documentos a la vez, en el caso que suba más de 100 documentos el sistema lanzará el siguiente error: "Exceeded the limit of number of files."

5-Sintaxis de búsqueda para encontrar archivos pdf

En Sharepoint 2010 se usaban scope con ciertas reglas de file extensions para encontrar los pdf. En Sharepoint 2013 es posible usar la feature “Sintaxis de búsqueda”

Ej:

{searchTerms} (fileextension:pdf AND site:sites/sitecollection/subsite)

La consulta anterior nos devolverá los documentos en pdf, que están dentro del subite, y que contenga una propiedad o contenido con las palabras que ingrese el usuario.

El parámetro {searchTerms} hace referencia al texto que ingreso el usuario final como input de la búsqueda.

Más info: http://blogs.msdn.com/b/sharepoint_sp/archive/2012/12/11/construcci-243-n-de-una-experiencia-de-b-250-squeda-especializada-en-minutos-con-sharepoint-2013.aspx

miércoles, 12 de diciembre de 2012

Links útiles #12 Sharepoint 2013

1-Integración Sharepoint 2013 y Exchange 2013 (Mailboxes)

http://www.bryanporter.com/archive/2012/12/10/how-to-enable-site-mailboxes-with-sharepoint-exchange.aspx

2-Sharepoint 2013 Apps – comandos útiles de powershell para configurar apps

http://blogs.msdn.com/b/besidethepoint/archive/2012/12/10/sharepoint-apps-powershell-helpers.aspx

3-Sharepoint 2013 Low trust apps (Azure)

http://blogs.msdn.com/b/besidethepoint/archive/2012/12/10/sharepoint-low-trust-apps-for-on-premises-deployments.aspx

4-Cross Site Publishing en Sharepoint 2013

http://blogs.technet.com/b/sharepoint_quick_reads/archive/2012/09/18/sharepoint-2013-cross-site-publishing.aspx

http://blogs.technet.com/b/sharepoint_quick_reads/archive/2012/09/19/configure-cross-site-publishing-in-sharepoint-server-2013-step-by-step.aspx

5-Ribbon custom action Sharepoint 2013

http://www.dotnetmafia.com/blogs/dotnettipoftheday/archive/2012/12/11/creating-sharepoint-ribbon-custom-actions-with-visual-studio-2012.aspx

6-External Content Type en Sharepoint 2013

http://wyldesharepoint.blogspot.com.ar/2012/12/sharepoint-2013-setting-up-external.html

7-Trabajar con Documentos offline y Sharepoint 2013

http://www.learningsharepoint.com/2012/12/12/how-to-work-with-documents-offline-in-sharepoint-2013/

8-Tipos de bases de datos de Sharepoint 2013

http://technet.microsoft.com/en-us/library/cc678868.aspx

9-Introducción a Apps en Sharepoint 2013

http://extreme-sharepoint.com/2012/12/12/sharepoint-2013-apps-basics/

10-Shredded Storage en Sharepoint

https://www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-2013-The-Truth-Behind-Shredded-Storage.aspx

martes, 11 de diciembre de 2012

Tips Info #84 Sharepoint 2010

1-Setear la default page de un site mediante powershell

$site = Get-SPSite http://webapplication/sites/site
$web = $site.RootWeb #or $web = $site.OpenWeb("yoursubsite")
$folder = $web.RootFolder
$folder.WelcomePage = "SitePages/homapage.aspx" #or  $folder.WelcomePage = "default.aspx") (or  $folder.WelcomePage = "Shared%20Documents/otra_pagina.aspx")
$folder.update()
$web.Dispose()
$site.Dispose()

2-XSL custom para un XsltListViewWebPart y DataFormWebPart (itemstyle.xsl)

Se puede usar la propiedad XslLink

<Xsl>
<xsl:stylesheet><!-- Se borraron los namespaces para una mejor lectura-->
<xsl:include href="/SiteAssets/Custom.xsl"/>
</xsl:stylesheet>
</Xsl>

3-Configurar major version para todas las librerías y hacer una limpieza de versiones viejas

$SPsiteCollection = Get-SPSite "http://url_sitecollection"
$versionsToKeep = 5;
foreach($SPweb in $SPsiteCollection.AllWebs)

    foreach ($SPlist in $SPweb.Lists)
    { 
        if($SPlist.EnableVersioning=$true)
        {
            $SPlist.MajorVersionLimit = 5;   
            $SPlist.Update();
        }
       
        foreach ($SPListItem in $SPlist.Items)
         {
           $currentVersionsCount= $SPListItem.Versions.count
        
           if($currentVersionsCount -gt $versionstoKeep)
             {
                $SPListItem.SystemUpdate()
             }
         }
    } 
}

4-Session timeout para forms authentication en Sharepoint 2010

Se puede configurar la opción de timeout de la sessión para la autenticación vía forms mediante el siguiente script de powershell

$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.FormsTokenLifetime = (New-Timespan –Minutes 30)
$sts.LogonTokenCacheExpirationWindow = (New-Timespan –Minutes 30)
$sts.Update()
iisreset

5-Encontrar el número de usuarios en un site collection mediante powershell

Get-SPSiteAdministration -Identity http://sitecollection_url | Select-Object Url, UsersCount

lunes, 10 de diciembre de 2012

Links útiles #55–Sharepoint 2010

1-Custom expiration formula

http://www.c-sharpcorner.com/UploadFile/anavijai/how-to-create-custom-expiration-formula-in-sharepoint-2010/

2-Embeber videos en Sharepoint (mediante API y fields)

http://vgrem.wordpress.com/2012/11/26/embedding-and-sharing-video-in-sharepoint-part-three-aggregating-video-feeds-and-utilizing-api/

http://vgrem.wordpress.com/2012/10/28/embedding-and-sharing-video-in-sharepoint/

3-Forefront Unified Access Gateway paraSharepoint

http://community.bamboosolutions.com/blogs/sharepoint-2013/archive/2012/12/05/how-to-set-up-microsoft-forefront-unified-access-gateway-environment-for-sharepoint-2013.aspx

4-SSL con Client Object

http://brandonatkinson.blogspot.com.ar/2012/12/using-sharepoint-client-object-model.html

5-Abrir la Edit View desde una List View

http://brandonatkinson.blogspot.com.ar/2012/11/open-sharepoint-list-items-directly.html

Links útiles #11 Sharepoint 2013

1-Google analytics para Sharepoint 2013

http://virtualizesharepoint.com/2012/12/04/google-analytics-for-sharepoint-2013-office-365/

2-Search Services mediante powersell en Sharepoint 2013

http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?List=56f96349-3bb6-4087-94f4-7f95ff4ca81f&ID=378&Web=48e6fdd1-17db-4543-b2f9-6fc7185484fc

3-Cambios de la versión Sharepoint 2013 preview a la versión Sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/05/important-developer-changes-from-office-and-sharepoint-2013-preview-to-office-and-sharepoint-2013.aspx

4-Site Policy en Sharepoint 2013

http://www.jrjlee.com/2012/12/enforcing-site-policy-selection-in.html

5-Cross Domains sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/29/solving-cross-domain-problems-in-apps-for-sharepoint.aspx

6-Licencias en Sharepoint 2013

http://blogs.msdn.com/b/officeapps/archive/2012/11/09/licensing-your-apps-for-sharepoint.aspx

http://talbottcrowell.wordpress.com/2012/11/29/sharepoint-2013-using-claims-to-manage-licensing/

7-Apps en Sharepoint 2013

http://blogs.msdn.com/b/kaevans/archive/2012/11/27/creating-high-trust-sharepoint-apps-with-microsoft-office-developer-tools-for-visual-studio-2012-preview-2.aspx

http://sebastiantegel.wordpress.com/2012/11/29/sharepoint-apps-setup/

http://sharepointchick.com/archive/2012/07/29/setting-up-your-app-domain-for-sharepoint-2013.aspx

8-Kerberos en Sharepoint 2013

http://download.microsoft.com/download/B/B/F/BBF0C6F3-6E36-4979-8C43-DE165AD7AE34/SP2010%20Kerberos%20Guide.docx

Reporting Services: http://support.microsoft.com/kb/2723587

9-Web part Timeline y Project Sumary en Sharepoint 2013

http://www.learningsharepoint.com/2012/12/09/the-new-timeline-and-project-summary-webpart-in-sharepoint-2013/

10-Sign is as Diferente User en Sharepoint 2013

http://nickgrattan.wordpress.com/2012/07/23/sign-in-as-different-user-and-sharepoint-2013/

jueves, 6 de diciembre de 2012

Tips Info #83 Sharepoint 2010

1-Agrupar por content type en Sharepoint 2010

Edita el web part, agregando lo siguiente:

screen_2

2-Verificar si se necesita ejecutar un upgrade con psconfig

Ejecutar el siguiente comando de powershell: (get-spserver $env:computername).NeedsUpgrade

3-Obtener la lista de todos los usuarios de un web application

Get-SPWebApplication http://webapplication:puerto | Get-SPSite | Get-SPWeb | Get-SPUser

4-Obtener el tamaño de las bases de Sharepoint 2010 en MB

Get-SPDatabase | Sort-Object disksizerequired -desc | Format-Table Name, @{Label ="Size in MB"; Expression = {$_.disksizerequired/1024/1024}}

5-Algunos tips para considerar al unir un server a la granja de Sharepoint

  • La key de la licencia debe ser la misma para todos los servers de la granja
  • La cuenta que ejecuta Farm Configuration Wizard debe ser la Farm Account.
  • Si usas alias para los sql server, recuerda que cada server debe tener el mismo alias (sino tendrás problemas de conexión a base de datos)
  • Verifica si los nuevos servers se pueden  comunicar con los demás servers

martes, 4 de diciembre de 2012

Links útiles #10–Sharepoint 2013

1-REST en Sharepoint 2013

http://morshemesh.blogspot.com.ar/2012/10/sharepoint-2013-rest-overview-via.html

http://sharingpoint.blogspot.com.ar/2012/11/sharepoint-2013-rest-library.html

2-Discovery Center para encontrar Lync Content en Sharepoint 2013

http://blogs.technet.com/b/jenstr/archive/2012/08/17/using-sharepoint-server-2013-preview-discovery-center-to-find-lync-archived-content.aspx

3-Master page en Sharepoint 2013

http://borderingdotnet.blogspot.com.ar/2012/11/going-html-with-masterpages.html

4-Configuración de Workflows en Sharepoint 2013

http://elczara.wordpress.com/2012/11/25/workflow-configuration-in-sharepoint-2013/

5-Geolocalización en Sharepoint 2013

http://msmvps.com/blogs/sundar_narasiman/archive/2012/11/22/how-to-add-geolocation-fields-to-sharepoint-2013-site.aspx

6-Licencias en Sharepoint 2013

http://www.titus.com/blog/2012/11/spc-diary-day-4-user-license-enforcement-in-sharepoint-2013/

7-Iframes en Sharepont 2013

http://www.learningsharepoint.com/2012/11/24/how-to-use-iframes-in-sharepoint-2013

8-Search RSS en Sharepoint 2013

http://www.mavention.nl/blog/search-based-rss-sharepoint-2013

9-Drag and drop en Sharepoint 2013

http://www.sharepointanalysthq.com/2012/12/drag-and-drop-in-sharepoint-2013/

10-App Domains – On Premise Apps en Sharepoint 2013

http://blogs.perficient.com/microsoft/2012/10/configuring-sharepoint-2013-preview-for-on-premise-apps/

Tips Info #1 Sharepoint 2013

1-Upload multiple en Sharepoint 2013

La opción de Upload multiple files ha sido deprecated, ahora se podrá usar drag and drop desde la vista del explorador, o de cualquier ubicación.

New-Picture-23

New-Picture-53

Fijate que cambio el label de Upload multiple, ahora dice “Upload Files using windows Explorer Instead”

Recuerda revisar si tienes el servicio WebClient iniciado, y también agrega el site de Sharepoint como site seguro.

2-Algunas mejoras de base de datos en Sharepoint 2013

Gracias a MS SQL 2012 Server se usa la feature shredded storage que reduce el tamaño de las content database y optimiza el tráfico de red.

Se removieron un motón de tablas que no se usaban y se simplicó el schema de base de datos.
En SP2013 se utiliza by the MS-FSSHTTP que permite que sólo los cambios que se han editado se guarden en la base de contenido. En 2010 cada vez que generabas una nueva versión, se guardaba la versión vieja y la nueva.

3-Folder y document sets en Sharepoint 2013

Es posible:

  • Crear una carpeta dentro de otra carpeta
  • Crear un document set dentro de una carpeta
  • Crear una carpeta dentro de un document set

No es posible:

  • Crear un document set dentro de un document set

4-Ocultar la Quick launch o left nav mediante la feature “Focus on content”

New-Picture-23

New-Picture-25

New-Picture-26

5-Acceso denegado (401) en un nuevo web application en Sharepoint 2013 ó el navegador pregunta de forma continua por

Ejecute los siguientes pasos:

  • deshabilite la feature DisableLoopbackCheck (link)
  • Agregue una policy de full control sobre el usuario administrador
  • Agregue el usuario del app que ejecuta como farm administrator.
  • Configure la clave de registro BackConnectionHostNames (link)
  • Agregue el site collection como trusted site

viernes, 30 de noviembre de 2012

Tips Info #82 Sharepoint 2010

1-Tablas NameValuePair

Al crear una columna con un índice, se llenará las tablas NameValuePair[_{SQLCollation}] con datos de la columna que tu indexas.

Cada vez que actualizas datos de las columnas, se actualiza las tablas NameValuePair[_{SQLCollation}]. Cuando se realiza una consulta a cualquiera de las listas de las cuales tiene un campo indexado, a continuación, se hace un JOIN con la tabla dbo.AllLists y la tabla dbo.NameValuePair. Esto provocará que las queries sean más rápidas.

2-Versionado y acceso anónimo

Si activas la opción “Major Version” en el versionado de las librerías, cada vez que publicas una versión, todos los usuarios podrán ver esa versión incluso los anónimos. En cambio una versión "minor" sólo los propietarios del documento, administradores y usuarios con permisos de approve podrán ver la versión.

3-Mostrar los attachments (adjuntos) de listas en xlst

Usar el control <xsl:element name="SharePoint:AttachmentsField">

<xsl:element name="SharePoint:AttachmentsField">
    <xsl:attribute name="runat">server</xsl:attribute>
    <xsl:attribute name="FieldName">Attachments</xsl:attribute>
    <xsl:attribute name="ControlMode">Display</xsl:attribute>
    <xsl:attribute name="Visible">true</xsl:attribute>
    <xsl:attribute name="ItemId">
        <xsl:value-of select="@ID"/>
    </xsl:attribute>
</xsl:element>

4-Query sobre list items de varios sites

Se puede usar SPSiteDataQuery o CrossListQueryInfo.

5-Algunos tips útiles sobre querys string en Sharepoint

Por default, Sharepoint 2010 muestra la última versión del documento, si se quiere mostrar todas las versiones, se puede utilizar el query string IncludeVersions:

AllItems.aspx?IncludeVersions=TRUE

Si se quiere mostrar sólo los items de un folder, se puede utilizar el query string RootFolder=*

Ej: url?RootFolder=*  ->muestra los items de todos los folders

Ej: http://urlsitecollection/sites/Demo/TheDocumentLibrary/Forms/AllItems.aspx?RootFolder=%2fdemo%2fthedocumentlibrary%2fcarpeta

Importante: el query string RootFolder es case sensitive, debe tener caracteres de escape (%2f para barras, %2d para guiones)

Editar una página de NewItem o EditItem (por default no se pueden editar)
Ej: agregar el query string ToolPaneView, DispForm.aspx?ID=12&ToolPaneView=2

Query string que permite retornar a una url determinada, al cerrar la página o aceptar la acción
?Source=http://sitecollection/Intranet/default.aspx

Otros parámetros útiles: _ModerationStatus y _IsCurrentVersion

jueves, 29 de noviembre de 2012

Tips Info #81 Sharepoint 2010

1-Error en Visual Studio en ambiente local de Sharepoint: The web application at http://server could not be found. Verify that you have typed the URL correctly. If the URL should be serving existing content, the system administrator may need to add a new request URL mapping to the intended application.

Revisa que estés compilando en x64, ya que Sharepoint es una plataforma de 64 bits.

image

2-Error: The method “GetItems” of the Type “List” with id “{ID}” is blocked by the administrator  on the server

Este error se debe a que se quiso consumir información de Sharepoint mediante client object.

Ejecuto el siguiente comando de powershell para saber si el método se encuentra como tipo restringido.

$wa = Get-SPWebApplication -Identity http://webapplication_url
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

Como pueden ver en la imagen superior, el método GetItems está restringido.

Para solucionar este error ejecutar el siguiente comando:

$wa = Get-SPWebApplication -Identity "http://webapplication_url"
$wa.ClientCallableSettings.AnonymousRestrictedTypes.Remove([Microsoft.SharePoint.SPList], "GetItems")
$wa.Update()
$wa.ClientCallableSettings.AnonymousRestrictedTypes

image

3-Tips de SQL tunning para Sharepoint

  • maxdop = 1 (Max degree of parallelism)

6443.BlogMaxdopPhoto%231

Cuando se ejecuta una consulta en paralelo, sin duda, encontrará
que uno de los hilos (thread) termina antes que el otro y tiene que esperar a otra
hilo para hacer su trabajo. En aplicaciones con transacciones cortas y rápidas, esto
está muy bien. En las aplicaciones con gran cantidad de transacciones, con un montón de
consultas ejecutadas en paralelo (es decir, como es el caso de SharePoint), esto puede conducir a una
reducción en el rendimiento, ya que los threads que tienen que hacer el trabajo real, tienen que
esperar a que otros hilos terminen.

  • No hacer shrink de los datafiles (MDF, NDF, LDF)

Puede ocasionar desfragmentación de indices y pérdida de performance

  • Configuración de la TempDB

Crear la base de datos tempdb en el almacenamiento más rápido disponible (SSD es una gran opción). Pre-asignación de espacio para tus archivos de tempdb estableciendo el tamaño del archivo inicial a un valor más grande para que pueda adaptarse a la carga de trabajo típica en el entorno, se puede ir en una regla de oro que el tamaño debe ser de 25% de la base de datos más grande de contenido.Crea varios archivos de datos para maximizar el ancho de banda del disco y reduce la contención archivo TEMPDB. Hacer cada archivo del mismo tamaño, lo que permite una óptima proporción de llenado rendimiento.

  • No habilitar la opción de “Auto Update Statistics” y “Auto Update Statistics Asyncronously”

auto-create-statistics-on-a-sql-server_thumb

 

4-Ocultar la ribbon para usuarios anónimos

Buscar en la master page el div con el id s4-ribbonrow, y agregar la clase hide-ribbon

<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle hide-ribbon">

Una vez agregado la clase, se deberá agregar el siguiente control en la master page

<SharePoint:SPSecurityTrimmedControl ID="VerRibbon" PermissionString="ManageLists" runat="server">
  <style type="text/css">
    body .hide-ribbon {
      display: none;
    }
  </style>
</SharePoint:SPSecurityTrimmedControl>

También se puede agregar todo el div s4-ribbonrow, pero puede ocasionar problemas con el elemento #s4-workspace y los scrollbars.

5-Cambiar el logo de todos los sites collections y sites de un web application mediante powershell

Get-SPWebApplication http://url_webapplication | get-spsite -Limit All | get-spweb -Limit All | foreach {$_.SiteLogoUrl = "/_layouts/images/custom/logo.gif"; $_.Update()}

Links útiles #54–Sharepoint 2010

1-Workflows custom en Sharepoint 2010

http://www.techbubbles.com/workflowfoundation/creating-a-custom-sequential-workflow-in-sharepoint-2010

http://www.techbubbles.com/microsoft/creating-parallel-workflow-in-sharepoint-2010/

2-Librería para queries en formato CAML

http://camlex.codeplex.com/

3-Windows Powershell for Sharepoint Command Builder

http://www.microsoft.com/resources/TechNet/en-us/Office/media/WindowsPowerShell/WindowsPowerShellCommandBuilder.html

4-Problema con forms authentication en Sharepoint 2010 al mover la base de membership (debido al machine config)

http://blog.bugrapostaci.com/2012/11/24/sharepoint-2010-form-based-authentication-problem-event-id1315-and-event-id8306/

5-Sharepoint Emulators

http://blogs.msdn.com/b/visualstudioalm/archive/2012/11/26/introducing-sharepoint-emulators.aspx

6-Migración de LOTUS a Sharepoint 2010

http://sprider.org/2012/11/29/lotus-notes-to-sharepoint-2010-migration/

Links útiles #9- Sharepoint 2013

1-Sites feeds y follow en Sharepoint 2013

http://www.learningsharepoint.com/2012/11/23/what-are-site-feeds-and-how-to-follow-unfollow-sites-in-sharepoint-2013/

2-Incremental crawls en Sharepoint 2013

https://www.nothingbutsharepoint.com/sites/itpro/Pages/SharePoint-2013-Search-Continuous-Crawling.aspx

3-Publicación entre sitios con Sharepoint 2013

http://blogs.msdn.com/b/sharepoint_sp/archive/2012/11/27/introducci-243-n-a-la-publicaci-243-n-entre-sitios-de-sharepoint-2013-parte-1.aspx

4-Sharepoint 2013 for education

http://sharepoint.nauplius.net/2012/11/sharepoint-2013-for-education.html

5-Search Schema para Sharepoint 2013

http://blogs.technet.com/b/tothesharepoint/archive/2012/11/26/introducing-search-schema-for-sharepoint-2013.aspx

miércoles, 21 de noviembre de 2012

Tips Info #80 Sharepoint 2010

1-Error:  An exception occurred when trying to issue security token: The server was unable to process the request due to an internal error.  For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK documentation and inspect the server trace logs..

Este error puede ocurrir al configurar forms authentication en Sharepoint 2010.

Para ver el error real, debermos editar el web.config que está dentro de \14\WebServices\SecurityToken (previo backup del mismo), y agregar la siguiente línea debajo de la línea “serviceThrottling”:

<serviceDebug includeExceptionDetailInFaults="True" httpHelpPageEnabled="True"/>

6a012875706f1b970c014e88808662970d

2-Obtener el tamaño de las bases de datos de Sharepoint

SELECT d.name,
ROUND(SUM(mf.size) * 8 / 1024, 0) Size_MBs
FROM sys.master_files mf
INNER JOIN sys.databases d ON d.database_id = mf.database_id
WHERE d.database_id > 4 -- Skip de las bases de sistema
GROUP BY d.name
ORDER BY d.name

3-Actualizar información de un usuario desde el AD

Set-SPUser -Identity domain\user -Web http://site -SyncFromAD

4-Error 500 al llamar un web services vía jquery o javascript

Agregar en el web.config de tu web application y en el web.config de la carpete ISAPI lo siguiente:

<system.web>
  <webServices>
    <protocols>
      <add name="HttpGet" />
      <add name="HttpPost" />
    </protocols>
  </webServices>
...
</system.web>

5-Re-provisionar todos los Sharepoint Web Services

$h = Get-SPServiceHostconfig
$h.Provision()
$services = Get-SPServiceApplication
foreach ($service in $services) { $service.provision();
write-host $service.name}

Links útiles #7 Sharepoint 2013

1-Machine Translation

http://blogs.technet.com/b/wbaer/archive/2012/11/12/introduction-to-machine-translation-services-in-sharepoint-2013.aspx

2-Shredded Storage en Sharepoint 2013

http://blogs.technet.com/b/wbaer/archive/2012/11/12/introduction-to-shredded-storage-in-sharepoint-2013.aspx

3-Information Managment Policies en Sharepoint 2013

http://www.learningsharepoint.com/2012/11/14/information-management-policies-in-sharepoint-2013

4-Newsfeed en Sharepoint 2013

http://wyldesharepoint.blogspot.com.ar/2012/11/sharepoint-2013-newsfeed-and-share.html

5-Nuevo Office Web App Server para Sharepoint 2013

http://blogs.technet.com/b/office2010_sp/archive/2012/11/20/introducci-243-n-a-office-web-apps-server.aspx

martes, 20 de noviembre de 2012

Tips Info # 79 Sharepoint 2010

1-Acceso denegado para todos los usuarios excepto para la cuenta de farm al hacer un restore

Esto se solucionando configurando las cuentas de super reader y writer, y dando una policy de full control a las mismas.

$wa = Get-SPWebApplication -Identity "<WebApplication>"  
$wa.Properties["portalsuperuseraccount"] = "<SuperUser>"  
$wa.Properties["portalsuperreaderaccount"] = "<SuperReader>"  
$wa.Update() 

Obviamente las cuentas deben estar previamente creadas.

Este error se debe a lo siguiente: La caché de objetos almacena propiedades de los elementos en Microsoft SharePoint Server 2010. La característica de publicación usa los elementos de esta memoria caché para representar páginas web. Los objetivos de la caché de objetos son reducir la carga en el equipo en el que se ejecuta SQL Server y mejorar el rendimiento y latencia de la solicitud. La caché de objetos realiza consultas como una de dos cuentas de usuario integradas: la cuenta de usuario súper del portal y la cuenta de lector súper del portal. Estas cuentas de usuario deben configurarse correctamente para garantizar que la caché de objetos funcione correctamente. La cuenta de usuario súper del portal debe ser una cuenta que tenga acceso de control total a la aplicación web. La cuenta de lector súper del portal debe ser una cuenta que tenga acceso completo de lectura a la aplicación web.

2-Borrar o Recuperar un web part cerrado

image

Ingrese en la URL el siguiente parámetro ?contents=1 , esto abrirá una página donde podrá borrar el web part cerrado

image

Para restaurar un web part cerrado, deberá editar la página y vaya al link de agregar web part. Al abrir la gallería, debemos elegir la sección “Closed Web Parts”

image

3-Query sobre múltiples listas de Sharepoint con GetSiteData

SPSiteDataQuery sQuery = new SPSiteDataQuery();
string where += "<Lists>";
       where += "<List ID='ID de lista 1'/>";
       where += "<List ID='ID de lista 2'/>";
       where += "<List ID='ID de lista 3'/>";
       where += "</Lists>";
       sQuery.Lists = where;
       sQuery.ViewFields = "<FieldRef Name ='Title' />";
      
DataTable results = SPContext.Current.Web.GetSiteData(sQuery);

Más info: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spweb.getsitedata.aspx

4-Agregar un agrupamiento de más de 2 columnas en Sharepoint 2010

Crear una página de web part, y agregar un “Emty Data View”

image

En el nuevo web part haz click en “Click here to select a data source” . A continuación elige la lista que deseas mostrar. A continuación se mostrará el “Data Source Details Pane”

Selecciona las columnas que desees con SHIFT, y para finalizar el proceso haz click en “Insert Selected Fields as” y elige “Multiple Item View”

image

A continuación agrega el agrupamiento que necesites:

image

5-Feature ViewFormPagesLockDown

Dentro de un site con acceso anónimo, se puede prevenir que usuarios anónimos naveguen a páginas internas o que buscadores indexen el contenido: ej:

/_layouts/viewlsts.aspx

/Lists/[NombreLista]/AlItems.aspx

Esto se puede desactivar mediante la feature ViewFormPagesLockdown

Esto es una feature oculta, pero se puede acceder vía powershell:
Get-SPFeature | where { $_.DisplayName -eq "ViewFormPagesLockdown"}

image

Esta feature tiene alcance a nivel de site collection, se puede activar mediante powershell:

Enable-SPFeature -url http://site_collection -identity XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXX -confirm:$false

Puede ocasionar problemas con ciertos sites anónimos que permite que usuarios carguen encuestas o listas con determinados datos.

Incluso cuando el modo de bloqueo está activada, los usuarios anónimos pueden acceder a determinadoas direcciones URL de Sharepoint, tales como las páginas en el directorio _layouts y servicios web que están expuestos en el directorio _vti_bin. Se puede solucionar este problema mediante web.config.

Ej: deniego a todo link interno a usuarios anónimos (?)

<configuration>
<location path="_layouts">     <system.web>                        <authorization>         <deny users="?" />       </authorization>     </system.web>   </location>
<location path="_vti_bin">     <system.web>                        <authorization>         <deny users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/login.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/error.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
<location path="_layouts/accessdenied.aspx">     <system.web>       <authorization>         <allow users="?" />       </authorization>     </system.web>   </location>
</configuration>
Más información: http://technet.microsoft.com/en-us/library/ee191479(v=office.12).aspx