segunda-feira, 22 de dezembro de 2014

SharePoint 2013 - "The URL is invalid." na criação de subsites.


Os eventos abaixo ocorrem normalmente na criação de subsites caso que campos nativos foram modificados no pai do novo subsite.

1. O evento na interface do SharePoint:
Sorry, something went wrong The URL '<URL>/<SITE>.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.


2. No ULS: "The URL '<URL>/<SITE>.aspx' is invalid." 
System.Runtime.InteropServices.COMException: <nativehr>0x81020030</nativehr><nativestack></nativestack>The URL '<URL>/<SITE>.aspx' is invalid.  It may refer to a nonexistent file or folder, or refer to a valid file or folder th   at is not in the current Web., StackTrace:      at Microsoft.SharePoint.SPListItem.AddOrUpdateItem(Boolean bAdd, Boolean bSystem, Boolean bPreserveItemVersion, Boolean bNoVersion, Boolean bMigration, Boolean bPublish, Boolean bCheckOut, Boolean bCheckin, Guid newGuidOnAdd, Int32& ulID, Object& objAttachmentNames, Object& objAttachmentContents, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion)       at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion)    

3. No ULS: "Parameter '@tp_Author' was supplied multiple times."
System.Data.SqlClient.SqlException (0x80131904): Parameter '@tp_Author' was supplied multiple times.             at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)             at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)             at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)             at System.Data.SqlClient.SqlDataReader.TryHasMoreRows(Boolean& moreRows)             at System.Data.SqlClient.SqlDataReader.TryReadInternal(Boolean setTimeout, Boolean& more)             at System.Data.SqlClient.SqlDataReader.TryNextResult(Boolean& more)             at System.Data.SqlClient.SqlDataReader.NextResult()             at Microsoft.SharePoint.SPSqlClient.ExecuteQueryInternal(Boolean retryfordeadlock)             at Microsoft.SharePoint.SPSqlClient.ExecuteQuery(Boolean retryfordeadlock)

O seguinte script identifica o campo a partir da coluna identificada "tp_author" no evento 3.
## informe o url do pai do novo subsite
$web = get-spweb "http://url/pai"
## informe a coluna identificada 
$web.fields | where-object {$_.schemaxml -like "*tp_author*"} | select title


Os desenvolvedores do SharePoint introduziram no SharePoint 2013 um novo método para esse caso - Microsoft.SharePoint.SPField.RevertCustomizations() que nós podemos utilizar para reverter as customizações em campos nativos:

($web.fields | where-object {$_.schemaxml -like "*tp_author*"}).RevertCustomizations()

Observação: Não utilize o método update para concluir a atualização, isso adicionaria a infomação (indesejada) da versão no schema do campo:



[] 

quarta-feira, 17 de dezembro de 2014

Configurar SharePoint 2013 para usar o Servidor do Office Web Apps (OWA)


Quando usado juntamente com o SharePoint 2013, o Office Web Apps fornece versões atualizadas do Word Web App, Excel Web App, PowerPoint Web App e OneNote Web App. Os usuários podem exibir e dependendo da licença, editar documentos do Office no navegador em computadores e em vários dispositivos móveis, como Windows Phone, iPhone, iPad e Tablets sem depender da instalação local do Office.

Além dos novos recursos, a arquitetura e o método de implantação mudaram, o que permite que o Office Web Apps forneça as mesmas funcionalidades para o Exchange 2013 e o Lync Server 2013.

Modo de abertura padrão para documentos abertos a partir de bibliotecas de documentos do SharePoint 2013

É possível configurar se os arquivos do Word, do PowerPoint, do Excel e do OneNote são abertos em um aplicativo cliente (caso esteja instalado) ou no navegador. Por padrão, após a configuração do SharePoint 2013 para usar o Office Web Apps, os arquivos do Office são abertos no navegador.

Há duas formas de alterar o comportamento padrão a fim de permitir que aplicativos clientes abram os arquivos diretamente:

  1. Global: O comportamento pode ser ajustado usando os cmdlets New-SPWOPIBindingSet-SPWOPIBinding e Remove-SPWopibinding. Por exemplo: o comando Remove-SPWOPIBinding -Application "Excel" remove o binding do Excel do OWA.
  2. Em conjuntos de sites ou bibliotecas de documento: Os administradores e usuários de conjuntos de sites podem especificar se os arquivos do Office são abertos em aplicativos clientes. Usuários podem alterar essa configuração nas propriedades da biblioteca de documentos e os administradores do conjunto de sites podem alterar a configuração na parte administrativa do conjunto de sites.

Instalação do Office Web Apps

A instalação do produto é simples e possuiu requisitos ligeiramente diferentes dependendo da versão do servidor Windows. O seguinte KB contém todos os passos necessários para realizar a instalação.



Configurar o Office Web Apps para SharePoint 2013

O cmdlet New-OfficeWebAppsFarm cria o servidor / o farm do OWA. O seguinte exemplo criará um farm usando HTTP e habilitará a edição (recomendado é HTTPS):

New-OfficeWebAppsFarm -InternalURL "http://owa.contoso.com" -AllowHttp -EditingEnabled

Parâmetros:
  • –InternalURL: é um nome de domínio totalmente qualificado (FQDN) do servidor que executa o Servidor do Office Web Apps, como http://nomeservidor.contoso.com.
  • –ExternalURL: é o FQDN que pode ser acessado na Internet.
  • –CertificateName: é o nome amigável do certificado.
  • –EditingEnabled: é opcional e habilita a edição no Office Web Apps quando utilizado com o SharePoint 2013. Este parâmetro não é utilizado pelo Lync Server 2013 ou Exchange Server 2013 porque não suportam a edição.

Configurar o SharePoint 2013 para Office Web Apps

O cmdlet New-SPWOPIBinding conecta SharePoint com o OWA. O seguinte exemplo conectará o SharePoint com o farm do Office Web Apps "OWA" permitindo o HTTP:

New-SPWOPIBinding -ServerName owa -AllowHTTP


Importante: A utilização do HTTP requer adicionalmente que nós permitamos essa forma de comunicação, que não é recomendado, no serviço do Security Token por meio do script abaixo:


$config = (Get-SPSecurityTokenServiceConfig)
$config.AllowOAuthOverHttp = $true
$config.Update()


Atualizações do Office Web Apps

A instalação das atualizações nos servidores do OWA requer a recriação do farm do OWA. Execute o cmdlet Remove-OfficeWebAppsMachine antes da instalação e recrie o farm utilizando o cmdlet New-OfficeWebAppsFarm.

Importante: Também é recomendado a recriação da configuração no lado do SharePoint utilizando o cmdlet Remove-SPWOPIBinding -All:$true



Fontes adicionais: