Mostrando entradas con la etiqueta Web Application. Mostrar todas las entradas
Mostrando entradas con la etiqueta Web Application. Mostrar todas las entradas

domingo, 17 de julio de 2016

Parte 6–SharePoint 2016 Creación de web application

Indice de Instalación de Sharepoint 2016

En esta parte, creo un web application http://intra.contoso.com

Uso 3 cuentas:

  • svcspwapp: Sharepoint Web Application Account, cuenta de identidad para ejecutar los application pools del IIS
  • svcspsprusr:  Sharepoint SuperUser, cuenta para acceder al web application con Full Read access (auditoria/caching)
  • svcspsprread: Sharepoint SuperReader cuenta para acceder al web application con Full Control access (auditoria/caching)

 

Descargar Script

$ver = $host | select version

if($Ver.version.major -gt 1) {$Host.Runspace.ThreadOptions = "ReuseThread"}

if(!(Get-PSSnapin Microsoft.SharePoint.PowerShell -ea 0))
{
    Add-PSSnapin Microsoft.SharePoint.PowerShell
}

Write-Progress -Activity "Creando Web Application" -Status "Seteando Variables"
##CONFIGURACIÓN

# Web Application URL
$WebApplicationURL = "http://intra.contoso.com"

# Nombre para el SharePoint Web Application
$WebApplicationName = "Intra Web Application"

# Content Database para el web application
$ContentDatabase = "Intra_ContentDB1"

# Nombre para el Application Pool
$ApplicationPoolDisplayName = "Intra App Pool"

# Identidad para el Application Pool (domain\user)
$ApplicationPoolIdentity = "CONTOSO\svcspwapp"

# Password para el Application Pool
$ApplicationPoolPassword = "xxxxxxxxxx"

# Cuenta para Super Reader
$PortalSuperReader = "i:0#.w|CONTOSO\svcspsprread"

# Cuenta para Super User
$PortalSuperUser = "i:0#.w|CONTOSO\svcspsprusr"

Write-Progress -Activity "Creando Web Application" -Status "Loading Functions"


Function CrearClaimsWebApp($WebApplicationName, $WebApplicationURL, $ContentDatabase, $HTTPPort)
{
    $ap = New-SPAuthenticationProvider
   
    if($AppPoolUsed -eq $True)
    {
        Write-Progress -Activity "Creating Web Application" -Status "Using Application Pool With Existing Web Applications"
        Set-Variable -Name WebApp -Value (New-SPWebApplication -ApplicationPool $ApplicationPoolDisplayName -Name $WebApplicationName -url $WebApplicationURL -port $HTTPPort -DatabaseName $ContentDatabase -HostHeader $hostHeader -AuthenticationProvider $ap) -Scope Script
       

        Write-Progress -Activity "Creating Web Application" -Status "Configuring Object Cache Accounts"
        SetObjectCache
       
    }
    else
    {       
        Write-Progress -Activity "Creating Web Application" -Status "Using Application Pool With No Existing Web Applications"
        Set-Variable -Name WebApp -Value (New-SPWebApplication -ApplicationPool $ApplicationPoolDisplayName -ApplicationPoolAccount $AppPoolManagedAccount.Username -Name $WebApplicationName -url $WebApplicationURL -port $HTTPPort -DatabaseName $ContentDatabase -HostHeader $hostHeader -AuthenticationProvider $ap) -Scope Script
       
        Write-Progress -Activity "Creating Web Application" -Status "Configuring Object Cache Accounts"
        SetObjectCache
       
    }
}

Function ValidarURL($WebApplicationURL)
{
    if(get-spwebapplication $WebApplicationURL -ErrorAction SilentlyContinue)
    {
        Write-Progress -Activity "Creando Web Application" -Status "Abortando proceso debido a un conflicto de URL"
        Write-Host "Abortando: Web Application $WebApplicationURL ya existe" -ForegroundColor Red
      
        #Seteo el valor CriticalError a $True resultado en NO crear nada
        Set-Variable -Name CriticalError -Value $True
    }  
    elseif($WebApplicationURL.StartsWith("http://"))
        {
            Set-Variable HostHeader -Value ($WebApplicationURL.Substring(7)) -Scope Script
            Set-Variable -Name HTTPPort -Value "80" -Scope Script
        }
        elseif($WebApplicationURL.StartsWith("https://"))
        {
            Set-Variable HostHeader -Value ($WebApplicationURL.Substring(8)) -Scope Script
            Set-Variable -Name HTTPPort -Value "443" -Scope Script
        }
}

Function ValidarAppPool($AppPoolName, $WebApplicationURL)
{
    $CurrentErrorActionPreference = $ErrorActionPreference
    $ErrorActionPreference = "SilentlyContinue"

    #Verifica si existe un application pool con el nombre pasado como parametro   
    $TestAppPool = Get-WebAppPoolState $AppPoolName

    if(Get-SPServiceApplicationPool $AppPoolName)
    {
        $AppPools = Get-SPWebApplication | select ApplicationPool

        if($AppPools)
        {
            foreach($Pool in $AppPools)
            {
              
                [Array]$Poolchild = $Poolchild += ($Pool.ApplicationPool.DisplayName)

                if($Poolchild.Contains($ApplicationPoolDisplayName))
                {
                    Set-Variable -Name AppPoolUsed -Value $True -Scope Script
                }

                else
                {
                    Set-Variable -Name AppPoolUsed -Value $False -Scope Script
                }
            }
        }
       
        Set-Variable -Name AppPool -Value (Get-SPServiceApplicationPool $AppPoolName) -scope Script

        Set-Variable -Name AppPoolManagedAccount -Value (Get-SPManagedAccount | ? {$_.username -eq ($AppPool.ProcessAccountName)}) -scope Script
    }
    elseif($TestAppPool)
    {
        Write-Host "Aborting: Application Pool $AppPoolName already exists on the server and is not a SharePoint Application Pool `n`rWeb Application `"$WebApplicationURL`" will not be created" -ForegroundColor Red
        Set-Variable -Name CriticalError -Value $True
    }
    elseif(!($TestAppPool))
    {
        ValidarManagedAccount $ApplicationPoolIdentity

        if($ManagedAccountExists -eq $True)
        {
            Write-Host "Creating New App Pool using Existing Managed Account"
            Set-Variable -Name AppPoolManagedAccount -Value (Get-SPManagedAccount $ApplicationPoolIdentity | select username) -scope "Script"

            Set-Variable -Name AppPool -Value (New-SPServiceApplicationPool -Name $ApplicationPoolDisplayName -Account $ApplicationPoolIdentity) -scope "Script"
        }
        else
        {
            Write-Host "Creating New Managed Account And App Pool"
            $AppPoolCredentials = New-Object System.Management.Automation.PSCredential $ApplicationPoolIdentity, (ConvertTo-SecureString $ApplicationPoolPassword -AsPlainText -Force)
           
            Set-Variable -Name AppPoolManagedAccount -Value (New-SPManagedAccount -Credential $AppPoolCredentials) -scope "Script"
           
            Set-Variable -Name AppPool -Value (New-SPServiceApplicationPool -Name $ApplicationPoolDisplayName -Account (get-spmanagedaccount $ApplicationPoolIdentity)) -scope "Script"
        }

    }
   
    $ErrorActionPreference = $CurrentErrorActionPreference

}

Function ValidarManagedAccount($ApplicationPoolIdentity)
{
    if(Get-SPManagedAccount $ApplicationPoolIdentity -ErrorAction SilentlyContinue)
    {
        Set-Variable -Name ManagedAccountExists -Value $True -Scope Script
    }
    else
    {
        Set-Variable -Name ManagedAccountExists -Value $False -Scope Script
    }
}

Function LimpiarVariables
{
    $CurrentErrorActionPreference = $ErrorActionPreference
    $ErrorActionPreference = "SilentlyContinue"

    Remove-Variable $CriticalError -ErrorAction SilentlyContinue
    $ErrorActionPreference = $CurrentErrorActionPreference
}

Function SetObjectCache
{
    $WebApp.Properties["portalsuperuseraccount"] = $PortalSuperUser
    $WebApp.Properties["portalsuperreaderaccount"] = $PortalSuperReader
    
    #Creo una nueva policy para el Super User
    $SuperUserPolicy = $WebApp.Policies.Add($PortalSuperUser, "Portal Super User Account")
    #Asigno Full Control al Super User
    $SuperUserPolicy.PolicyRoleBindings.Add($WebApp.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::FullControl))
   
    #Creo una nueva policy para el Super Reader
    $SuperReaderPolicy = $WebApp.Policies.Add($PortalSuperReader, "Portal Super Reader Account")   
    #Asigno Full Read al Super Reader
    $SuperReaderPolicy.PolicyRoleBindings.Add($WebApp.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::FullRead))

    #Commit these changes to the web application
    $WebApp.Update()
}


Write-Progress -Activity "Creando Web Application" -Status "Validando las URL del Web Application"
ValidarURL $WebApplicationURL

Write-Progress -Activity "Creando Web Application" -Status "Validando los Pools de los Application"
ValidarAppPool $ApplicationPoolDisplayName $WebApplicationURL


if(!($CriticalError))
{
    Write-Progress -Activity "Creando Web Application" -Status "Creando Claims-Based Web Application"
    CrearClaimsWebApp $WebApplicationName $WebApplicationURL $ContentDatabase $HTTPPort
}

sábado, 29 de junio de 2013

Tips info #13 Sharepoint 2013

1-Search Center Pages en Sharepoint 2013

En SharePoint 2013 hay uno nuevo concepto relacionado al Search llamado "Search Verticals", el mismo hace referencia a las Categorías que se muestran en el Search box de un centro de búsqueda (Search Center).

SearchNavigation_OOTB

Por default muestra las siguientes categorías: Everything, People, Conversations and Video

Cuando se crea un Search Center se crean también páginas asociadas:

  • default.aspx: la página inicial del Search Center, y en donde los usuarios ingresan sus consultas
  • results.aspx: la página default de resultados de búsqueda para el Search Center, también es la página de resultados para el search vertical Everything.
  • peopleresults.aspx: la página default de resultados de búsqueda para el People search vertical.
  • conversationresults.aspx: la página default de resultados de búsqueda para el  Conversations search vertical.
  • videoresults.aspx: la página default de resultados de búsqueda para el Videos search vertical.
  • advanced.aspx: es la página para búsquedas avanzadas, donde se puede agregar restricciones a las consultas.
  • image_thumb1

    Para agregar un nuevo Search Vertical, deberemos crear primero una página asociada a la categoría.

    SearchCreatePageRibbon

    SearchCreatePage

    Una vez que se crea la página, deberás editar la página, y a continuación Editar el web part de resultados. Click en change query, y a continuación podrás realizar una custom query para el resultado de búsqueda. En la parte superior elige el modo avanzado, click en el combo de Keyword filter y selecciona “Only return sites”, y presiona el botón “Add Keyword Filter”.

    image

    Detén la edición de la página, y redirígete a la sección de Search Settings del site.

    SiteSettingsSearch

    Baja hasta la sección de “Configure Search Navigation” y haz click en “Add Link”. Agrega la url de la página y el texto del Search Vertical o Categoría

    image

    2-Sharepoint Color Palette Tool

    Hay una herramienta llamada Sharepoint Color Palette Tool (http://www.microsoft.com/en-us/download/details.aspx?id=38182) que permite diseñar los colores (.spcolor file) de nuestros sites en Sharepoint 2013.

    sharepoint 2013 theme wizard

    El archivo .spcolor es un archivo xml que define el valor del color en hexadecimal para los colores del site.Ej:

    <?xml version="1.0" encoding="utf-8"?>

    <s:colorPalette isInverted="false" previewSlot1="BackgroundOverlay" previewSlot2="BodyText" previewSlot3="AccentText" xmlns:s="http://schemas.microsoft.com/sharepoint/">

    <s:color name="BodyText" value="444444" />

    <s:color name="SubtleBodyText" value="777777" />

    <s:color name="StrongBodyText" value="262626" />

    <s:color name="DisabledText" value="B1B1B1" />

    <s:color name="SiteTitle" value="262626" />

    <s:color name="WebPartHeading" value="444444" />

    <s:color name="ErrorText" value="BF0000" />

    <s:color name="AccentText" value="0072C6" />

    <s:color name="SearchURL" value="338200" />

    <s:color name="Hyperlink" value="0072C6" />

    <s:color name="BackgroundOverlay" value="D8FFFFFF" />

    ...

    </s:colorPalette>

    Para mayor información de este archivo puede consultar el siguiente link:http://msdn.microsoft.com/en-us/library/jj945889.aspx

    SharePoint 2013 Color Palette Tool

    Una vez que termino de editar el archivo spcolor, lo podrá subir con el Sharepoint designer 2013 a la carpeta _catalogs/theme/15/

    3-Conectores que vienen por default en Sharepoint 2013

    El crawler usa conectores para conectarse a contenido remoto, en las versiones anteriores se llamaban protocol handlers.

    Connector

    Content repository

    Bcs

    Business Connectivity Services (internal protocol)

    Bcs2

    Business Connectivity Services URLs (internal protocol)

    File

    File shares

    http

    Web sites

    https

    Web sites over Secure Sockets Layer (SSL)

    Notes

    Lotus Notes databases

    Rb

    Exchange public folders for versions prior to Microsoft Exchange Server 2003

    Rbs

    Exchange public folders over SSL for versions prior to Exchange Server 2003

    Sps

    People profiles in Microsoft Office SharePoint Portal Server 2003

    Sps3

    People profiles in Microsoft Office SharePoint Server 2007

    Sps3s

    People profiles in Office SharePoint Server 2007 over SSL

    Spss

    People profiles in SharePoint Portal Server 2003 over SSL

    Sts3

    Windows SharePoint Services 3.0 and Office SharePoint Server 2007 sites

    Sts3s

    Windows SharePoint Services 3.0 and Office SharePoint Server 2007 sites over SSL

    Sts4

    Microsoft SharePoint Foundation 2010, SharePoint Server 2010, SharePoint Foundation 2013, and SharePoint Server 2013 sites

    Sts4s

    SharePoint Foundation 2010, SharePoint Server 2010, SharePoint Foundation 2013, and SharePoint Server 2013 sites over SSL

    4-Aumentar el tamaño para subir archivos en Sharepoint 2013

    El valor máximo definido por default para subir archivos en Sharepoint es de 50 MB, y el tamaño máximo permitido es de 2 GB. Algunos errores que pueden aparecer cuando se sobrepasa el tamaño default son:

  • "An unexpected error has occurred"
  • "The page cannot be displayed”
  • "An unknown error occurred"
  • "HTTP 404 – Page Not Found”
  • “Request timed Out’
  • Para cambiar el límite default de upload, realice lo siguiente

  • SharePoint Central Administration > Application Management'
  • Slecciona el web application adonde deseas cambiar el valor máximo de subida
  • En la sección de “Maximum upload size”, escribe el nuevo valor en MB, ej: 250 MB
  • image

    En el caso que quieras setear esta configuración para tipos de archivos predefinidos usa el siguiente comando.

    $WebApp = Get-SPWebApplication "http://webapplication
    $WebApp.MaximumFileSizePerExtension.Add("wmv",250)
    $WebApp.Update()

    En el script setee que se podrá subir archivos wmv de 250 MB de tamaño máximo.

    A continuación se deberá modificar el web.config del web application.

  • Abre el web.config desde 'C:\Inetpub\wwwroot\wss\VirtualDirectories\<Virtual Directory>'
  • <httpRuntime maxRequestLength="51200" /> with <httpRuntime executionTimeout="999999" maxRequestLength="51200" />

  • Ejecuta IISReset
  • Después de haber editado el web config, se deberá editar el tiempo de conexión del IIS (por default es de 120 seg), pero para conexiones lentas puede ser un problema

    image

    image

    Para finalizar la configuración, se deberá la propiedad “Maximum allowed content length(Bytes)” del IIS.

    Selecciona el local host (nombre del server), Request Filtering -> Edit Feature Settings –> cambia la propiedad Maximum allowed content length(Bytes)

    En el caso que uses client object podrás setear la propiedad RequestTimeout del contexto.

    context.RequestTimeout = 3600000; // Time in milliseconds
    Microsoft.SharePoint.Client.File.SaveBinaryDirect(context, relativePath, filestream, overWrite);.

    5-Transaction Log Full en la base de contenido de Sharepoint 2013


    Realizando un check in de una página, me lanzó el error “Cannot complete this action. The URL 'Pages/default.aspx' is invalid. It may refer to a nonexistent file or folder, or refer to a valid file or folder that is not in the current Web.”


    Revisando los logs, me aparecía “The transaction log for database ‘WSS_Content’ is full.


    A continuación deberás realizar lo siguiente:


  • Abre el SQL Management Studio
  • Click en ‘New Query’
  • Ejecuta lo siguiente

  • USE [WSS_Content];


    –  Set Recovery Model a SIMPLE

    ALTER DATABASE WSS_Content

    SET RECOVERY SIMPLE;

    GO

    DBCC SHRINKFILE ( WSS_Content_log, 100);

    GO

    –  Set Recovery Model a FULL

    ALTER DATABASE WSS_Content

    SET RECOVERY FULL;

    Se realizará un truncate de los logs a 100 MB. Haz un IISRESET a continuación.


    Para saber el nombre del nombre lógico de los logs, has click derecho sobre la base, ve a las propiedad de la base, y selecciona la sección files.


    IMPORTANTE: nunca realizar shrinks de los datafiles, genera fragmentación.

    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()

    sábado, 7 de julio de 2012

    Links útiles #42 Sharepoint

    1-Mostrar web parts de charts con fuentes de datos de excel services

    http://www.dotnetcurry.com/ShowArticle.aspx?ID=816

    2-AppFabric y Sharepoint 2010

    http://www.wictorwilen.se/Post/Improve-performance-of-your-SharePoint-2010-applications-using-Windows-Server-AppFabric-caching.aspx

    3-Porqué LINQ to Sharepoint es malo para el desarrollo ?

    http://blog.furuknap.net/why-linq-to-sharepoint-is-a-bad-idea

    4-Recover data from an unattached content database

    http://jmhogua.blogspot.com.ar/2012/07/recuperando-un-documento-de-una-base-de.html

    5-Crear una feature en Visual Studio 2010

    http://salaudeen.blogspot.com.ar/2012/05/how-to-create-feature-in-sharepoint.html

    6-Crear una application page en Sharepoint 2010

    http://salaudeen.blogspot.com.ar/2012/07/how-to-create-custom-application-page.html

    7-Windows AZURE / Sharepoint 2010 / REST / JSONP

    http://blogs.msdn.com/b/steve_fox/archive/2012/07/01/jsonp-sharepoint-online-amp-windows-azure.aspx

    8-Sección del web.config relacionada a Sharepoint 2010

    http://www.gavd.net/servers/sharepoint/sps_item.aspx?top=wps&itm=119

    9-Crear un external content type mediante Visual Studio 2010

    http://sharepointjourney.wordpress.com/2012/07/05/creating-an-external-content-type-using-the-visual-studio-2010-bdc-model-project-template-and-extend-the-external-content-type/

    10-Rebuild de un web application (Nuevo web application misma base de contenido)

    http://mmman.itgroove.net/2011/12/rebuilding-a-web-application-in-sharepoint-central-admin-data-non-destructive/

    lunes, 25 de junio de 2012

    Tips/Info #38 Sharepoint

    1-Filtrar una vista por el tipo de documento (Ej: doc)

    ViewFilter

    2-Obtener el current user o ID con Sharepoint Designer

    Hay dos variables del server que se pueden usar:

    AUTH_USER
    El nombre del usuario que es derivado del header de autorización enviado por el client, antes que el user name sea mapeado a una cuenta de windows. Esta variable no es diferente a REMOTE_USER. Si tu tienes un filtro de autenticatión instalado en tu web server que mapea incoming users a cuentas, usa LOGON_USER para ver el user name mapeado.

    LOGON_USER
    La cuenta de windows que el usuario es impersonalizado (impersonating) mientras es conectado al web server.

    Se debe agregar lo siguiente en la sescción ParameterBindings

        <ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/>
        <ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/>
        <ParameterBinding Name="LogonUser" Location="ServerVariable(LOGON_USER)"/>

    Y al usarlo:

    <xsl:value-of select="$UserID"/><br/>
    <xsl:value-of select="$LogonUser"/>
    Nos devolverá lo siguiente:
    La primer sentencia nos devolverá el Alias de la cuenta (Ej: Christian Azcón), y la segunda nos devolverá el ID de la cuenta (Ej: DOMINIO\cazcon)
    3-Comparativa de Documents Sets y Folders


    • Más información en forma agrupado: los documents sets tienen una welcome page que contiene toda la información resumida
    • Permite definir metadata default para todo el document set.
    • Permite sincronización de metadata (mediante las Shared Columns)
    • Permite versionado de items o documentos en particular o todo el contenido (document set)
    • Workflow OOTB para Documents Sets
    • Declarar un document set como registro (record)

    Más información: http://www.sharepointanalysthq.com/2012/06/documents-sets-vs-folders-in-sharepoint-2010/


    4-Web Application y Web Site de IIS


    Una aplicación web de SharePoint está estrechamente relacionado con lo que se llama un sitio web en IIS. Un sitio web de IIS controla las solicitudes entrantes a través de un puerto en particular, y comprueba si hay un encabezado de host en particular o la dirección IP, o ambas cosas. Cada aplicación web de Sharepoint es hosteada en un sitio web de IIS.
       
    La aplicación web de SharePoint y el sitio web de IIS no son exactamente lo mismo (y que están representados por las diferentes clases en el modelo de objetos de SharePoint: la clase y la clase SPWebApplication y SPIisWebSite).
    Por un lado, aunque por lo general hay una relación uno-a-uno entre las aplicaciones web de SharePoint y los sitios web de IIS, esto no es siempre el caso. Es posible extender una aplicación web de SharePoint para múltiples sitios web de IIS.


    5-Sharepoint indexa items (sin errores), pero no retorna resultados de forma correcta


    Recuerda que los resultados del search son security trimmed, es decir si no tienes permisos sobre un item en una lista, no podrás verlo en los resultados del search.


    Pero si tienes permisos y sigues sin ver los resultados, re provisiona el servicio de search. A veces ocurre que quedan mal configurado el servicio de search.


    Si lo anterior no funciona trata de agregar la cuenta de crawl, al grupo Windows Authorization Access group (a veces aparece el siguiente error en los logs: Unexpected AuthZInitializeContextFromSid failed)


    Si sigues teniendo problemas con el search, verifica que en log no tengas el siguiente mensaje: Query Processor                                 Unexpected       AuthzInitializeContextFromSid failed with 2. The querying user’s Active Directory object may be corrupted, invalid or inaccessible. Query results which require non-Claims Windows authorization will not be returned to this querying user.


    Este problema se debe al siguiente KB publicado: http://support.microsoft.com/kb/2344518


    Lo que debes hacer es ejecutar la siguiente consulta de powershell:


    $ssa = Get-SPEnterpriseSearchServiceApplication "nombre del servicio de search"
    $ssa.SetProperty("ForceClaimACLs",1)
    $ssa.GetProperty(“ForceClaimACLs”)


    Después realiza un full crawl y verifica si el search retorna resultados.

    lunes, 28 de mayo de 2012

    Tips/Info #24 Sharepoint 2010

    1-Obtener información sobre la granja

    Get-SPFarmConfig
    WorkflowBatchSize                 : 150
    WorkflowPostponeThreshold : 30
    WorkflowEventDeliveryTimeout : 10
    DataFormWebPartAutoRefreshEnabled : True
    ASPScriptOptimizationEnabled : True
    2-Renombrar el servidor

    stsadm -o renameserver -oldservername <oldServerName> -newservername <newServerName>

    Recuerde actualizar los alternate access mapping

    3-Exportar todas las soluciones wsp 

    (Get-SPFarm).Solutions |% { $filename = “C:\TEMP” + "\" + $_.Name; $_.SolutionFile.SaveAs($filename) }


    4-Mostrar la página master page default de un sitio mediante powershell


    Get-SPWeb "http://misitio.com" | Select MasterUrl, CustomMasterUrl


    5-Limpiar la cache de Sharepoint Designer


    En Windows 7: limpiar el contenido de las siguientes carpetas


    C:\Users\<username>\AppData\Local\Microsoft\WebsiteCache


    C:\Users\<username>\AppData\Roaming\Microsoft\SharePoint Designer


    6-Código de errores de Sharepoint 2010

    401 Errores relacionados a acceso
    401;1 acceso no autorizado debido a que el inicio de sesión ha fallado
    401;2 acceso no autorizado debido a que el inicio de sesión ha fallado debido a la configuración del servidor
    401;3 acceso no autorizado debido a una entrada Access Control List (ACL)
    401;4 acceso no autorizado debido a un filtro IIS que esta bloqueando el acceso
    401;5 acceso no autorizado debido a una aplicación ISAPI or CGI
    403 Errores relacionados a seguridad
    403;1 Prohibido el acceso de ejecución, porque no está permitido
    403;2 Prohibido el acceso de lectura, porque no está permitido
    403;3 Prohibido el acceso a escritura porque no está permitido
    403;4 Prohibido ya que el uso de SSL se requiere
    403;5 Prohibida por el uso de 128 bits SSL es necesario
    403;6 Prohibida porque la dirección IP fue rechazada
    403;7 Prohibida porque un certificado de cliente se requiere
    403;8 Prohibida ya que el acceso al sitio se le niega
    403;9 Prohibido porque hay demasiados usuarios actualmente conectado al sitio
    403;10 Prohibido debido a una configuración no válida
    403;11 Prohibido debido a una contraseña no válida
    403;12 Prohibido ya que el sitio Web requiere un certificado de cliente válido
    403;13 Prohibido debido a que el certificado de cliente fue revocado
    403;14 Prohibido debido a que el directorio listado se le niega
    403;15 Prohibido el acceso porque el número de licencias de clientes se ha superado
    403;16 Prohibido ya que el certificado de acceso de cliente no es válida o no es de confianza
    403;17 Prohibida ya que el certificado de acceso de cliente ha caducado o aún no es válido
    424 Errores
    424 errores que normalmente aparecen cuando un nivel de protección de aplicaciones es demasiado alto. Para solucionarlo en tu servidor IIS, Ir a la aplicación web, seleccione la pestaña de propiedades del directorio virtual y establecer la protección de aplicaciones en Bajo (proceso IIS).
    500 Error
    Se trata de un error genérico interno en el servidor IIS. Una causa común de este error en un entorno de SharePoint es desmarca la opción "verify file exists" en el IIS
    503 Error
    Esto significa que un servicio ha dejado de funcionar o se puede colgar, ver en el Visor de sucesos en el servidor para ver cuál es la causa del problema



    7-Queries sobre listas y carpetas: performance


    Alternativas para SPList.Items


































    Métodos y propiedades con rendimiento deficiente


    Alternativas con mejor rendimiento


    SPList.Items.Count


    SPList.ItemCount


    SPList.Items.XmlDataSchema


    Creación de un objeto SPQuery para recuperar sólo los elementos que desee.


    SPList.Items.NumberOfFields


    Creación de un objeto SPQuery (especificando ViewFields) para recuperar solo los elementos que desee.


    SPList.Items[System.Guid]


    SPList.GetItemByUniqueId(System.Guid)


    SPList.Items[System.Int32]


    SPList.GetItemById(System.Int32)


    SPList.Items.GetItemById(System.Int32)


    SPList.GetItemById(System.Int32)


    SPList.Items.ReorderItems(System.Boolean[],System.Int32[],System.Int32)


    Realización de una consulta paginada mediante SPQuery y reordenación de los elementos dentro de cada página.


    SPList.Items.ListItemCollectionPosition


    ContentIterator.ProcessListItems(SPList, ContentIterator.ItemProcessor, ContentIterator.ItemProcessorErrorCallout) (solo Microsoft SharePoint Server 2010)


    SPList.Items.ListItemCollectionPosition


    ContentIterator.ProcessListItems(SPList, ContentIterator.ItemProcessor, ContentIterator.ItemProcessorErrorCallout) (solo SharePoint Server 2010)


    Alternativas para SPFolders.Files



















    Métodos y propiedades con rendimiento deficiente


    Alternativas con mejor rendimiento


    SPFolder.Files.Count


    SPFolder.ItemCount


    SPFolder.Files.GetEnumerator()


    ContentIterator.ProcessFilesInFolder(SPFolder, System.Boolean, ContentIterator.FileProcessor, ContentIterator.FileProcessorErrorCallout) (solo SharePoint Server 2010)


    SPFolder.Files[System.String]


    ContentIterator.GetFileInFolder(SPFolder, System.String) Como alternativa, SPFolder.ParentWeb.GetFile(SPUrlUtility.CombineUrl(SPFolder.Url, System.String) (solo SharePoint Server 2010)


    SPFolder.Files[System.Int32]


    No usar. Cambie a ContentIterator.ProcessFilesInFolder y cuente los elementos durante la iteración. (Solo SharePoint Server 2010)


    Recuperación de elementos con SPList.GetItems recomendado

    SPQuery query = new SPQuery();
    SPListItemCollection spListItems ;
    string lastItemIdOnPage = null; // Posición de la página
    int itemCount = 2000

    while (itemCount == 2000)
    {
    // Incluir solo los campos que usaré.
    query.ViewFields = "<FieldRef Name=\"ID\"/><FieldRef Name=\"ContentTypeId\"/>";
    query.RowLimit = 2000; // Solo selecciono top 2000.
    //Incluir items en subfolders.
    query.ViewAttributes = "Scope=\"Recursive\"";
    StringBuilder sb = new StringBuilder();
    //Ordenar la query por ID y detengo el escaneo de la tabla especificando override.
    sb.Append("<OrderBy Override=\"TRUE\"><FieldRef Name=\"ID\"/></OrderBy>");
    //.. Agrego mas texto si es necesario.
    query.Query = sb.ToString();
    // Obtengo 2,000 items más.

    SPListItemCollectionPosition pos = new SPListItemCollectionPosition(lastItemIdOnPage);
    query.ListItemCollectionPosition = pos; //info de la página.
    spListItems = spList.GetItems(query);
    lastItemIdOnPage = spListItems.ListItemCollectionPosition.PagingInfo;
    itemCount = spListItems.Count;

    }



    8-Obtener todas las content database por web application


    Get-SPWebApplication | %{Write-Output "`n- $($_.url)"; foreach($cd in $_.contentdatabases){Write-Output $cd.name}} [>> C:\Temp\exportContentDatabasesInfo.txt ]


    La parte entre [] es optativa, permite exportar el resultado a un archivo externo.


    9-Procesos requeridos para sandbox solutions


    SPUCWorkerprocess.exe:

    Sandbox Worker process service es un servicio de aplicación separado que ejecuta código Sandbox. Este servicio debe ser iniciado en cada granja donde se use Sandbox Solutions.

    SPUCWorkerprocessproxy.exe:

    Sandbox Worker process proxy trabaja como un proxy para el Worker process. Se ocupa de la ejecución de código Sandbox y también puede servir a otras granjas si se ha configurado.Ayuda al balanceo de carga.

    SPUCHostservice.exe:

    Sandbox User Code Service se encarga del código de usuario en la Sandbox. Este servicio debe estar iniciado en la granja para usar sandbox solutions.

    miércoles, 23 de mayo de 2012

    Tips /Info # 25 Sharepoint 2010

    1-Obtener información de los web application

    Get-SPWebApplication
    Get-SPWebApplication | Select-Object Name, Url
    2-Límite del método SPUtility.SendEmail()
    Este método tiene un límite de número máximo de caracteres de 2048 en un línea.
    Se puede dividir el body del mensaje en pedazos (chucks), mediante el caracter \n:
    htmlBody = htmlBody + "\n" + myNewChunk + "\n"; 
    htmlBody = "\n" + htmlBody.Replace(EmailTemplateTokens.AllEmployees, "<p>" + replacementString + "\n" + EmailTemplateTokens.AllEmployees); 
     
    Alternativamente podrá utilizar la clase: System.Net.Mail.MailMessage

    Otras limitaciones:


  • No se puede adjuntar archivos (attachments)
  • Por default, la dirección From es siempre la que está seteada en la sección del  Central Administration Outbound Mail
  • El asunto no puede contener una coma (‘,’) usar strSubject.Replace(",", " ")

    3-Exception 0x80070005 al configurar un ifilter de pdf (el search no indexa los pdf)


    Esto se debe a que la cuenta que realiza el crawl no tiene permisos sobre la carpeta de los binarios donde se instalo el ifilter. una vez que de permisos de lectura, reinicie el servicio de search.


    mssdmn.exe (0x13C0)        0x063C        SharePoint Server Search        Exceptions        1hjo        Medium        Exception thrown: 0x80070005


    Más info: http://todosharepoint.blogspot.com.ar/2012/01/configurar-pdf-ifilter-para-sharepoint.html


    4-Obtener la zona actual del site de Sharepoint


    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Administration;
                        string Zone = string.Empty;
                        if (SPContext.Current.Site.Zone == SPUrlZone.Extranet)
                        {
                            Zone = "Extranet";
                        }
                        else if (SPContext.Current.Site.Zone == SPUrlZone.Internet)
                        {
                            Zone = "Internet";
                        }
                        else if (SPContext.Current.Site.Zone == SPUrlZone.Intranet)
                        {
                            Zone = "Intranet";
                        }
                        else if (SPContext.Current.Site.Zone == SPUrlZone.Custom)
                        {
                            Zone = "Custom";
                        }
                        else if (SPContext.Current.Site.Zone == SPUrlZone.Default)
                        {
                            Zone = "Default";
                        }

    5-Comandos de powershell para instalar soluciones

    Install      



    • Add-SPSolution  < Path de la solucion >
    • Install-SPSolution –Identity  < MySharePointSolution.wsp  > –WebApplication  < URL web application > -GACDeployment [ –force ]

    Ej: Add-SPUserSolution –LiteralPath c:\code\SandboxedSolutionProject.wsp –Sitehttp://sp2010/sites/sandbox


    Ej:Install-SPUserSolution –Identity SandboxedSolutionProject.wsp –Site http://sp2010/sites/sandbox


    Update    



    • Update-SPSolution –Identity  < MySharePointSolution.wsp > –LiteralPath  < Your WebPart Path > –GacDeployment

    UnInstall  



    • Uninstall-SPSolution –Identity  < MySharePointSolution.wsp > –WebApplication  < URL web application >
      Remove-SPSolution –Identity  < MySharePointSolution.wsp >

    Ej: Uninstall-SPUserSolution –Identity SandboxedSolutionProject.wsp –Site http://sp2010/sites/sandbox


    Ej: Remove-SPUserSolution –Identity SandboxedSolutionProject.wsp –Site http://sp2010/sites/sandbox


    6-Servicio OficialFile.asmx tope de 50 MB de subida


    (http://<server>/<site>/_vti_bin/OfficialFile.asmx) sólo se permite usarlo con archivos menores 50Mb. La configuración seteada en un web application con respecto al tamaño máximo de archivos no se aplica en este caso.


    El error: Monitorable        OfficialFile::SubmitFile: Encountered error when sending file http://sharepoint/sites/sitename/Library/file.zip  to http://sharepoint/sites/sitename/_vti_bin/OfficialFile.asmx: There was an exception running the extensions specified in the config file. —> Maximum request length exceeded.       


    El web service no está incluído de forma espcífica en la configuración del web application. Tiene su propia configuración y reside en C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\OfficialFile.asmx, no sobre el directorio virtual del web application.


    Solución:



    • Central Admin –> Manage Web Applications –> Select the Web Application –> General Settings –> Maximum Upload Size : setear el valor deseado
    • Abrir el C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\web.config


    y agregar la siguiente sección:


    <location path=”OfficialFile.asmx”>
        <system.web>
            <httpRuntime maxRequestLength=”xxxxxx″ executionTimeout=”240″ />
        </system.web>
    </location>

    maxRequestLength se define en KB.


    7-Configurar el comportamiente predeterminado para abrir documentos por el explorador (Office Web Apps)


  • La forma en que se abren los documentos en SharePoint varía en función de si la característica de OpenInClient está presente o no, y de si está habilitada o deshabilitada:


    • Si la característica de OpenInClient no está presente y Office Web Apps no está instalado, los documentos se abrirán en la aplicación cliente (valor predeterminado de SharePoint).
    • Si la característica de OpenInClient no está presente, Office Web Apps está instalado y se activan las aplicaciones de servicios de Office Web Apps, los documentos se abrirán en el explorador (Office Web Apps, de forma predeterminada).
    • Si la característica de OpenInClient está presente y habilitada, y las aplicaciones de servicio de las Office Web Apps están activadas, los documentos se abrirán en la aplicación cliente.
    • Si la característica de OpenInClient está presente y deshabilitada, y las aplicaciones de servicio de las Office Web Apps están activadas, los documentos se abrirán en el explorador.

    El siguiente ejemplo establece el comportamiento predeterminado para abrir todos los documentos en todos los sitios en su aplicación cliente asociada (si está disponible).

    $defaultOpenBehaviorFeatureId = $(Get-SPFeature -limit all | where {$_.displayname -eq "OpenInClient"}).Id 
    Get-SPSite -limit ALL |foreach{ Enable-SPFeature $defaultOpenBehaviorFeatureId -url $_.URL }

    El siguiente ejemplo establece el comportamiento predeterminado para abrir todos los documentos en todos los sitios en el explorador.

    $defaultOpenBehaviorFeatureId = $(Get-SPFeature -limit all | where {$_.displayname -eq "OpenInClient"}).Id 
    Get-SPSite -limit ALL |foreach{ Disable-SPFeature $defaultOpenBehaviorFeatureId -url $_.URL }
    El siguiente ejemplo establece el comportamiento predeterminado para abrir las bibliotecas de documentos protegidas por IRM en todos los sitios en su aplicación cliente asociada (si está disponible).
    Get-SPWeb -site http://contoso | % {$_.Lists} | where {$_.IrmEnabled -eq $true} | % {$_.DefaultItemOpen =[Microsoft.Sharepoint.DefaultItemOpen]::PreferClient; $_.Update()}

    sábado, 19 de mayo de 2012

    Links útiles #22 Sharepoint 2010

    1-Sharepoint vs discos de red

    http://andrewwarland.wordpress.com/2012/05/08/sharepoint-2010-vs-network-shares-for-managing-documents-and-records/

    2-Herramienta para activar/desactivar features en la granja de Sharepoint 2010

    http://featureadmin.codeplex.com/

    3-Propiedades de web parts

    http://borderingdotnet.blogspot.com.ar/2012/05/add-properties-to-your-web-part.html

    4-Configurar Sharepoint para autentificación cross forest

    http://www.quantumofgeek.com/2010/09/configure-sharepoint-to-authenticate-cross-forest-ad-users/

    5-Insertar icono en un grupo de la ribbon que levante un alert con el id de la lista, url de la lista y los id de los elementos seleccionados

    http://maulikdhorajia.blogspot.com.ar/2012/05/sharepoint-2010-insert-custom-icon-in.html

    5-Documentos adjuntos en los resultados de búsqueda

    https://www.nothingbutsharepoint.com/sites/eusp/Pages/SharePoint-Send-Document-Attachment-from-Search-Results.aspx

    6-REST Sharepoint 2010

    http://moss-net4u.blogspot.com.ar/2012/05/getting-started-using-odata-rest-api-to.html

    7-XLST fechas

    http://labs.steveottenad.com/sharepoint-2010-xslt-date-formatting/

    8-Migrar Reporting Services a otro server

    http://www.mssqltips.com/sqlservertip/2692/migrating-sql-reporting-services-to-a-new-server-by-moving-the-reporting-services-databases/

    9-Generar un ID secuencial cross farm con infopath

    http://blogs.msdn.com/b/rohit_pasrija/archive/2012/05/16/to-generate-sequential-reference-id-for-infopath-forms-across-sites-without-using-code.aspx

    10-Crear un site con object model

    http://blogs.msdn.com/b/findnavish/archive/2012/05/16/sharepoint-site-provisioning-using-the-sharepoint-object-model-approach.aspx

    11-Usar un workflow para cambiar los permisos para un usuario

    http://sharepointgroup.wordpress.com/2012/05/10/how-to-use-work-flow-to-change-list-item-permissions-by-sharepoint-designer-2010/

    12-Algunos links útiles de virtualización

    http://ghamson.wordpress.com/2012/05/10/useful-virtualisation-links-sp2010-sharepoint-in/

    13-Renombrar un IIS web application con powershell

    http://mikefrobbins.com/2012/05/17/rename-an-iis-web-application-with-powershell/

    14-Crear health rules

    http://bramnuyts.be/2012/05/18/automate-your-sharepoint-farm-maintenance-using-health-rules/

    15-XSLT llamar un método de una dll que se instaló en la GAC

    http://maulikdhorajia.blogspot.com.ar/2012/05/sharepoint-2010-call-server-side.html

    sábado, 5 de mayo de 2012

    Tips/Info #18 Sharepoint 2010

    1-Error: Unexpected error on server associating the workflow

    Este problema podría ser causado por la gran cantidad de tipos que se crean durante la compilación del flujo de trabajo,para flujos de trabajo con muchas variables de flujo de trabajo locales. Es más común con los flujos de trabajo con múltiples acciones de procesos de aprobación, ya que cada acción deProceso de Aprobación preconfigurado viene con un gran conjunto de variables locales.

    Puede ejecutar la siguiente consulta:

    $app = get-spwebapplication “[web app url]“
    $app.UserDefinedWorkflowMaximumComplexity = 30000
    $app.Update()

    Después de ejecutar estos comandos, deberá realizar un iisreset y trate de publicar de nuevo el workflow. La configuración default es de 7000.

    Más info: http://support.microsoft.com/kb/2557533

    2-CAML: filtrar una lista por membership

    <View>
    <Query>
    <Where>
    <Membership Type=”CurrentUserGroups”>
              <FieldRef Name=”AssignedTo”/>
    </Membership>
    </Where>
    </Query>
    </View>

    3-Ocultar “Todo el contenido del sitio” y “Papelera de reciclaje” en la quick launch.

    Dos posibilidades (ambas se realizan sobre la master page default que estén trabajando):

    A-

    <Sharepoint:SPSecurityTrimmedControl runat=”server” Permissions=”ManagePermissions”>

    <SharePoint:ClusteredSPLinkButton runat=”server” NavigateUrl=”~site/_layouts/recyclebin.aspx” ImageClass=”s4-specialNavIcon” ImageUrl=”/_layouts/images/fgimg.png” …  />

    </SharePoint:SPSecurityTrimmedControl>

    El valor del atributo ManagePermissions puede ser cambiado dependiendo del requerimiento

    B-

    <SharePoint:ClusteredSPLinkButton

    runat=”server”

    NavigateUrl=”~site/_layouts/recyclebin.aspx”

    ImageClass=”s4-specialNavIcon”

    ImageUrl=”/_layouts/images/fgimg.png” ..  Visible=”false“/>

    4-Cambiar el idioma de un site (PRECAUCIÓN CON ESTO)

    UPDATE dbo.AllWebs SET Language = 1034 WHERE Id = [[WebId]]

    Debe estar instalado el package de idioma 1034 (español).

    Hace un backup de la base de datos previo cambio.

    5-Ocultar la ribbon con seguridad

    <SharePoint:SPSecurityTrimmedControl PermissionsString="ManagePermissions" runat="server">

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

       </div>

    </SharePoint:SPSecurityTrimmedControl>

    El valor del atributo ManagePermissions puede ser cambiado dependiendo del requerimiento

    6-Databases running in compatibility range, upgrade recommended

    El mensaje indica que se debe hacer una actualización de Sharepoint, para ello (PREVIO BACKUP DE LA GRANJA DE FORMA COMPLETA) se deberá ejecutar el siguiente script de powershell:

    PSConfig.exe -cmd upgrade -inplace b2b -force -cmd applicationcontent -install -cmd installfeatures

    y a continuación reiniciar el servidor.

    Una vez reiniciado, revise el log para asegurarse que no hubo inconvenientes.

    7-Error: “Value does not fall within the expected range” exception in SPFieldMap.GetColumnNumber

    Este error se debe a que se llegó al límite de consultas de columnas lookup, o columnas de personas/grupos o a columnas de estado de workflows. Para ello deberá aumentar la propiedad List View Lookup Threshold del web application actual (Central Administration/Application Managment/Manage Web Applications/Seleccionar web application deseado)

    ResourceThrottling

    8-Codificar/Decodificar urls de Sharepoint

    http://meyerweb.com/eric/tools/dencoder/

    9-Cómo almacena Sharepoint las fechas?

    Sharepoint almacena las fechas en formato UTC. Al traer las fechas desde la base de datos las convierte al time zone del user actual. Para convertir la fecha en el formato del time zone actual del user, lo hace mediante la función fn_LocalDayFromUTCDate.

    10-Cuidado al guardar una lista como template que tiene un campo lookup, y utilizarla en otro site diferente.

    Al querer usar el template, nos lanzará una excepción, ya que el GUID de la lista lookup que indica el template no está en el site actual. Lo que puedes hacer es renombrar el archivo de template (.stp) a .cab y extraer el archivo de manifiesto, y editar el GUID (podrás obtener el GUID desde la url entrando a List Settings), y volver a guardarlo como .stp o usarlo con Visual studio.

    11-Cambiar el nombre de un web application

    $NombreViejo =Get-SPWebApplication | where {$_.Name -match "<NombreViejo>"}
    $NombreViejo.Name="<NuevoNombreWebApplication>"
    $NombreViejo.Update()
    Después deberás editar los access mappings (Central Administration/System Settings/Configure alternate access mappings)
    12-Error: “The install progress conflicts with a previously installed Microsoft Office 2010 Server product” SharePoint 2010

    Deberás borrar la clave de registro donde indica que está instalado Microsoft Office Web Apps. Realizar un search con “Microsoft Office Web Apps”
    HKEY_CLASSES_ROOT\Installer\Products 
    11-La opción de “New Document” está grisada



      • Verificar permisos para el usuario (Contribute)

      • Habilitar “Client Intergration” en la configuración de la web application

      • Deshabilitar “User Access Control” UAC

      • Ir a Library > Library settings > Advanced settings  > Allow management of content types setear a TRUE

    12-Dar permisos para todos los usuarios autentificados



    Usar el siguiente usuario:NT AUTHORITY\authenticated users


    13-Cancelar un deployment en progreso



    stsadm -o enumdeployments


    Obtengo el ID del job que deseo cancelar


    stsadm -o canceldeployment -id “el id del job”

    Después podrás verificar en el Central Administration que dirá que la solución no está deployada (“not deployed”)


    14-Habilitar el log de auditoria de SharePoint 2010 sobre una site collection


    STSADM.EXE -o activatefeature -name Reporting –url http://url_colleccionsitio/ –force


    15-Limpiar el log de la auditoria


    $sitio = Get-SPSite -Identity http://sitecollection
    $fecha = Get-Date
    $fecha = $date.AddMilliseconds(1)
    $sitio.Audit.TrimAuditLog($date)


    16- Execadmsvcjobs


    stsadm -o execadmsvcjobs

    Este comando permite ejecutar todos los trabajos administrativos del temporizador inmediatamente en lugar de esperar a que se ejecute el trabajo del temporizador.


    17-Acceso denegado a un administrador de site collection


    Al ingresar a un site y el usuario actual le da acceso denegado, pero tiene un rol de site collection administrator, posiblemente el site collection esté bloqueado (Central Administration, Application Management->SharePoint Site Management->Site collection quotas and locks)


    18-Saber la versión de Sharepoint de un Sharepoint público


    Ingresar a: _vti_pvt/buildversion.cnf

    Ej: http://sharepoint.microsoft.com/_vti_pvt/buildversion.cnf


    19-Donde guarda Sharepoint el connection string de la base de datos de configuración?


    Hay dos keys: DSN (Connection string para la configuration database) y Id (GUID de SharePoint configuration database)

    \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\Web Server Extensions\14.0\Secure\ConfigDb



    También es posible verlo desde el IIS

    image001

    viernes, 4 de mayo de 2012

    Tips/info #17–Sharepoint 2010

    1-Extensión de una aplicación web
    Si desea exponer el mismo contenido en una aplicación web a diferentes tipos de usuarios con métodos de autenticación o direcciones URL adicionales, puede extender una aplicación web existente a una nueva zona. Al extender la aplicación web a una nueva zona, se crea un sitio web de Internet Information Services (IIS) independiente (con su propio web config) para ofrecer el mismo contenido, pero con un tipo de autenticación y dirección URL únicos.
    Una aplicación web extendida puede usar hasta cinco zonas de red (predeterminada, intranet, Internet, personalizada y extranet). Por ejemplo, si desea extender una aplicación web para que los clientes puedan obtener acceso a contenido desde Internet, seleccione la zona de Internet y elija permitir el acceso anónimo y conceder a los usuarios anónimos permisos de solo lectura. Los clientes tendrán acceso a la misma aplicación web que los usuarios internos, pero mediante direcciones URL y configuraciones de autenticación distintas.
    2-Servicios dependientes en Sharepoint 2010
      • PerformancePoint Service requiere tener configurado: Excel Services, State Service
      • Sharepoint Server Search requiere tener configurado Usage and Health Data Collection Service
      • Visio Graphics service requiere tener configurado State Service
      • Web Analytics service requiere tener configurado State Service
    3-Obtener los ids de los application pools
    Get-SPServiceApplicationPool | select Id, Name
    Esta cmdlet nos dará la lista de Grupo de Aplicaciones
    4-Guardar el usuario actual en un campo de una lista

       1:  SPSecurity.RunWithElevatedPrivileges(delegate()
       2:              {
       3:                  SPWeb currentWeb = SPContext.Current.Web;   
       4:                 SPList lst = currentWeb.Lists["ListaPrueba"];
       5:                  SPListItemCollection myColl = lst.Items;
       6:                  SPListItem item = myColl.Add();
       7:                  item["Title"] = txtTitle.Text;   
       8:                  SPFieldUserValue value = new SPFieldUserValue(currentWeb, currentWeb.CurrentUser.ID, currentWeb.CurrentUser.LoginName);
       9:                  item["Autor"] = value.LookupId;
      10:                  item.Update();
      11:   
      12:              });

    5-Obtener los items en los cuales los worfklows tuvieron un error (Error Occurred)

    StatusValue
    Not Started0
    Failed on Start1
    In Progress2
    Error Occurred3
    Canceled4
    Completed5
    Failed on Start (retrying)6
    Error Occurred (retrying)7
    Approved16
    Rejected17


    supongamos que el workflow se llama “NombreWorkflow” la columna que indica el status del workflow se llamará “NombreWo”, son los primero 8 caracteres del nombre del workflow.


    La consulta CAML será <Eq><FieldRef Name=”NombreWo” /><Value Type=”WorkflowStatus”>3</Value></Eq>


    6-Al querer guarda una lista como template obtengo acceso denegado


    Ingresar (un administrador de site collection) a site > site actions > site settings > Galleries > List template gallery


    Y dar permisos de contribute a la persona que tiene persona


    7-Agregar una propiedad sobre el objeto “property bag” a un sitio
    $url= 'http://sharepoint.com/sites/Chris'
    $site = Get-SPSite($url)
    $rootWeb = $site.RootWeb
    $rootWeb.AllProperties.Add("Edad","29")  
    $rootWeb.Update()
    $ht = $rootWeb.AllProperties  # Muestro la tabla hash completa


    8-Diferencia entre Attach File y Upload File
    Adjuntar un archivo (attach file) se utiliza para agregar el archivo adjunto a la lista. Subir archivos (Upload File)  se utiliza para subir el archivo a la biblioteca de documentos.


    9-Método SPUtility.GetLocalizedString: recupera el valor de un recurso desde un archivo de recurso para un lenguaje específico
    using System;
    using System.Collections.Generic;
    using System.Globalization;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Utilities;
     
    namespace ConsoleApp
    {
        class Program
        {
            static void Main(string[] args)
            {
                using (SPSite site = new SPSite("http://localhost"))
                {
                    using (SPWeb web = site.RootWeb)
                    {
                        if (web.IsMultilingual)
                        {
                            IEnumerable<CultureInfo> cultures = web.SupportedUICultures;
                            foreach (CultureInfo culture in cultures)
                            {
                                // Print the value of a language resource in the current language.
                                string str = "$Resources:onet_TeamWebSite";
                                string locStr = SPUtility.GetLocalizedString(str, "core", (uint)culture.LCID);
     
                                Console.WriteLine("{0}  {1}", culture.Name, locStr);
                            }
                        }
                    }
                }
                Console.Write("\nPress ENTER to continue....");
                Console.ReadLine();
            }
        }
    }


    10-Reiniciar el servicio de SharePoint Foundation Web Services en el WFE (Web Front End)
    stsadm -o provisionservice -action start -servicetype spwebservice

    Después reiniciar IIS.


    11-No me aparece la opción “Save Site as Template”


    Puede ser que no tengas permisos, o que no hayas activado la feature: SharePoint Server Publishing


     12-List.ItemCount vs List.Items.Count

    var itemCount = list.Items.Count; 
    esta sentencia trae todo los items y en memoria hace la cuenta, en cambio la siguiente sentencia realiza la cuenta sin tomar todos los items.
    var itemCount = list.ItemCount;
    13-Customizar la navegación de MySites
    Site Actions > Site Settings > Top link bar


    0417.sp-sharepointers1


    0417.sp-sharepointers2


    Site Actions > Site Settings > Quick launch

    0417.sp-sharepointers3

    Si abres el master page mysite.master en SharePoint Designer, hay una área controlada por un delegado llamado “GlobalNavigation.”. Este control es cargado desde el folder especial 14.


    \14\TEMPLATE\CONTROLTEMPLATES\MySiteTopNavigation.ascx.