The content type text/html; charset=utf-8 of the response message does not match the content type of the binding

February 17, 2012 Leave a comment

Olá! Smile

Cenário:

Desenvolver para SharePoint 2010 usando Visual Studio 2010 é infinitamente melhor e mais produtivo do que desenvolver para SharePoint 2007 usando Visual Studio 2008.

Mas, como a vida dá voltas, me deparo com o cenário vivido por muito tempo. E tempo esse sensacional entendendo a estrutura do SharePoint.

Eis que ao montar um novo ambiente de desenvolvimento para SharePoint 2007, usando o Visual Studio eXtensions for Windows SharePoint Services (VSeWSS) 3.0, me deparo com um erro ao tentar montar um pacote .wsp “Package” ou tentar montar fazer um deploy no servidor.

ERRO:

Error: System.ServiceModel.ProtocolException System.ServiceModel.ProtocolException: The content type text/html; charset=utf-8 of the response message does not match the content type of the binding (text/xml; charset=utf-8). If using a custom encoder, be sure that the IsContentTypeSupported method is implemented properly. The first 1024 bytes of the response were: ‘<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>IIS 7.0 Detailed Error – 500.0 – Internal Server Error</title> <style type="text/css"> <!– body{margin:0;font-size:.7em;font-family:Verdana,Arial,Helvetica,sans-serif;background:#CBE1EF;} code{margin:0;color:#006600;font-size:1.1em;font-weight:bold;} .config_source code{font-size:.8em;color:#000000;} pre{margin:0;font-size:1.4em;word-wrap:break-word;} ul,ol{margin:10px 0 10px 40px;} ul.first,ol.first{margin-top:5px;} fieldset{padding:0 15px 10px 15px;} .summary-container fieldset{padding-bottom:5px;margin-top:4px;} legend.no-expand-all{padding:2px 15px 4px 10px;margin:0 0 0 -12px;} legend{color:#333333;padding:4px 15px 4px 10px;margin:4px 0 8px -12px;_margin-top:0px; border-top:1px solid #EDEDED;border-left:1px solid #EDEDED;border-right:1px solid #969696; border-bottom:1px solid #969696;background:#E7ECF0;font-weight:bold;f’. —> System.Net.WebException: The remote server returned an error: (500) Internal Server Error. at System.Net.HttpWebRequest.GetResponse().

SOLUÇÃO:

Para resolver o problema precisamos nos certificar que o Windows Communication Foundation HTTP Activation esteja ativado no servidor.

Para isso, vamos aos passos:

Abra o Server Manager > Features > Add Features:

clip_image002

No seletor de features marque a opção HTTP Activation, em .Net Framework Features > WCF Activation:

clip_image004

Clique em Next e Install para instalar a feature. Feito isso, o deploy irá funcionar.

 

—— Generate solution file and setup batch file ——

Creating solution …

Operation completed successfully.

Creating setup batch file …

Operation completed successfully.

—— Packaged successfully to C:\Projects\Sebrae\DoneIT.Sebrae.PortfolioWeb\bin\Debug\DoneIT.Sebrae.PortfolioWeb.wsp ——

========== Build: 1 succeeded or up-to-date, 0 failed, 0 skipped ==========

========== Deploy: 1 succeeded, 0 failed, 0 skipped ==========

 

Abraço!

The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered — perhaps no 64-bit provider is available

January 17, 2012 Leave a comment

Olá! Alegre

Cenário:

Automatizando alguns processos e/ou coletando informações de diversas fontes de dados para centralizar relatórios em um único ponto (SharePoint!) precisamos criar mecanismos de extração e carga das informações (ETL).

Na experiência deste post, precisei extrair as informações de banco de dados Access (.mdb) e jogar a informação em tabela no SQL.

Ao utilizar o provider nativo de acesso a fonte de dados Access e mandar rodar a extração me deparo com um erro.

ERRO:

The requested OLE DB provider Microsoft.Jet.OLEDB.4.0 is not registered — perhaps no 64-bit provider is available.

E de fato, como podemos ler, não existe a versão deste provider para plataforma 64 bits: http://support.microsoft.com/kb/957570.

SOLUÇÃO:

Para resolver o problema forcei o pacote do SQL Server Integration Services (SSIS) rodar como 32 bits, tanto no Business Intelligence Management Studio (BIMS) quanto no Timer no SQL Server Agent.

No BIMS, nas propriedades de configuração do projeto:

clip_image002

No Job do SQL Server Agent:

clip_image004

Abraço!

2011 in review

January 11, 2012 Leave a comment

The WordPress.com stats helper monkeys prepared a 2011 annual report for this blog.

Here’s an excerpt:

The concert hall at the Sydney Opera House holds 2,700 people. This blog was viewed about 16,000 times in 2011. If it were a concert at Sydney Opera House, it would take about 6 sold-out performances for that many people to see it.

Click here to see the complete report.

Categories: Uncategorized

Forçar Download arquivos PDF em Bibliotecas de Documentos em uma WebPart Customizada

November 17, 2011 Leave a comment

Olá! Alegre

Cenário:

Muitas vezes desenvolvendo soluções para SharePoint esbarramos com alguns “pequenos” comportamentos que o usuário solicita uma mudança.

A bola da vez foi que o comportamento padrão de arquivos PDF é abrir no browser (falando de IE, por exemplo). Então, temos uma aplicação customizada que lista os documentos de uma biblioteca e imprime o link do documento na tela para download.

Nos arquivos PDFs o browser entende e abre o documento no browser. Precisamos que seja forçado o download.

SOLUÇÃO:

Existem diversas formas de fazer isso, customizando ainda a aplicação. Mas(!) estamos trabalhando o SharePoint e com isso, temos toda a infraestrutura que já está nele!

Ora pois, o SharePoint já faz download de arquivos nativamente:

· No Ribbon

clip_image002

· No menu de contexto do item:

clip_image004

Então, por que não utilizar o que SharePoint já usa? (Sempre persiga isso! Se o SharePoint já faz, tente usar!)

Peace of cake! Com um pouco de debug feelings… descobrimos que o SharePoint simplesmente chama um página passando um parâmetro.

Ou seja, faça um simples <a href=”/_layouts/download.aspx?SourceUrl=http://sharepoint/Documents /Arquivo.pdf”></a> e o SharePoint forçará o download. ;)

clip_image006

Abraço!

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack

November 7, 2011 Leave a comment

Olá! Alegre

Cenário:

Algumas coisinhas que acontecem quando temos variáveis diferentes ao nosso Portal!

Nesta ocasião o Portal será exposto na Internet, e usuários com permissão somente leitura irão acessar o Portal.

Nos primeiros testes tudo Ok, mas algumas páginas usam determinados recursos que precisam de permissão elevada para rodar.

ERRO:

Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.

Ao tentar usar uma funcionalidade bem simples, como SPWeb.Webs, a excetion acima é gerada.

SOLUÇÃO:

Para solucionar o problema podemos forçar nosso código para rodar com permissões elevadas. O SharePoint nos ajuda com isso com o método:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx – SPSecurity.RunWithElevatedPrivileges Method

public static void RunWithElevatedPrivileges(

SPSecurity..::..CodeToRunElevated secureCode)

Então basta instanciar nossos objetos usando este método! Algo assim:

SPSecurity.RunWithElevatedPrivileges(delegate()

{

using (SPSite site = new SPSite(web.Site.ID))

{

// seu código aqui!

}

});

Seu código irá rodar com a conta do Application Pool, a qual possui permissões de SiteCollection Administrator em todas as sitecollections hospedadas nessa Application Pool.

Abraço!

Categories: Uncategorized

DateTimeControl customizado não carrega estilo

October 5, 2011 1 comment

Olá! Smile

Cenário:

Desenvolvendo soluções customizadas para o SharePoint é bem comum utilizar o DateTimeControl (controle do SharePoint) para usuários selecionarem datas em nossos formulários.

Em determinadas situações o calendário não renderiza corretamente. Ele não carrega o estilo e fica bem feio.

ERRO:

Vejam como o calendário fica nessas situações:

clip_image002

SOLUÇÃO:

Para solucionar o problema devemos alterar a página encarregada por renderizar o calendário. No SharePoint, encontramos essa página no caminho:

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS

clip_image004

Edite a página iframe.aspx e insira uma referência para carregar o arquivo CSS responsável por aplicar o estilo do calendário.

<link rel="stylesheet" type="text/css"href="/_layouts/1046/styles/datepickerv4.css"/>

NOTA: altere o 1046 para idioma do seu SharePoint. (Ex: 1046 – PT-BR, 1033 – EN-US)

O arquivo ficará parecido com o seguinte:

clip_image006

Salve o arquivo e clique no calendário para ver que ele irá carregar o estilo! Smile

clip_image008

Abraço!

Unable to retrieve external data for the following connections: The data sources may be unreachable, may not be responding, or may have denied you access

September 19, 2011 Leave a comment

Olá! Smile

Cenário:

Usando o Excel Services, no SharePoint 2007, para visualizar planilhas Excel no browser e conectadas com fontes de dados externas. A planilha carrega no browser tudo certo, mas ao solicitar a atualização das informações “Refresh” na fonte de dados, o SharePoint exibe um erro.

ERRO:

“Unable to retrieve external data for the following connections: The data sources may be unreachable, may not be responding, or may have denied you access. Verify the data refresh is enabled for the trusted file location and that the workbook data authentication is correctly set.”

Todas as configurações no Excel Services foram verificadas e estão corretas, como Trust File Locations e Trust Data Providers.

SOLUÇÃO:

Para solucionar o problema temos um fator muito importante que vai determinar a resolução:

· Servidor SharePoint e DataSources estão no mesmo servidor; ou

· Servidor SharePoint e DataSources são servidores separados.

Neste post vou detalhar a solução do primeiro caso, quando os servidores são o mesmo.

Para solucionar o problema devemos alterar uma configuração do Shared Services Provider para que o Excel Services use o modo Delegation de acesso. Para isso, usamos o seguinte comando usando a ferramenta de gerenciamento do SharePoint, STSADM.

Stsadm –o set-ecssecutiry –accessmodel delegation –ssp NomeSSP

Stsadm –o execadmsvcjobs

Iisreset

NOTA: Esta opção só deve ser executada se o servidor SharePoint e o servidor onde estão os dados (DataSource) forem o mesmo servidor!

Com isso o Excel Services agora consegue encaminhar as credenciais do usuários para a fonte de dados sem problemas, conseguindo assim, atualizar as informações.

Para a outra configuração, onde os servidores SharePoint e Datasources são diferentes, devemos configurar o método de autenticação do SharePoint para Kerberos, e aí as coisas ficam um pouco mais complicadas: http://blogs.msdn.com/b/martinkearn/archive/2007/04/23/configuring-kerberos-for-sharepoint-2007-part-1-base-configuration-for-sharepoint.aspx.

Abraço!

Security Validation for this Page is Invalid

September 1, 2011 Leave a comment

Olá! Smile

Cenário:

No SharePoint 2010, a maioria das páginas tem um FormDigest para tratar validações de segurança, mas às vezes forçamos uma situação que o SharePoint não consegue endereçar.

Uma situação dessas foi que eu mandei salvar um item com permissões elevadas mas também usei a informação do usuário logado para salvar algumas informações no item. Com isso, a validação se perdeu e gerou o erro abaixo.

ERRO:

“Security Validation for this Page is Invalid.”

SOLUÇÃO:

Mas, a solução foi bem tranquila (graças ao rápido raciocínio do amigo sentado ao lado, Rodrigo Romano).

 

SPWeb.AllowUnsafeUpdates = true;

Isso já resolve. Para quem já desenvolveu para SharePoint 2007, esse é um velho conhecido.

 

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
                  using (SPWeb web = site.OpenWeb())
                  {
                          web.AllowUnsafeUpdates = true;

                         //manda bala aqui

                         web.AllowUnsafeUpdates = false;
                    }
}

Abraço!

A solicitação de execução de código em modo seguro foi recusada porque o Serviço de Host do Código em Modo Seguro estava muito ocupado para lidar com a solicitação

August 11, 2011 2 comments

Olá! Smile

Overview:

No SharePoint 2010 temos a possibilidade de desenvolver aplicações “seguras”, com poder reduzido de atuação. Conseguimos isso com as soluções Sandbox.

Essas soluções rodam em processos separados e são incapazes de derrubar o funcionamento de uma Farm (ao contrário das soluções comuns). O SharePoint 2010 gerencia o funcionamento dessas soluções fazendo um “proxy” para realizar as operações que solicitamos, em nossas customizações.

Cenário:

Ao implantar a solução e ativá-la, disponibilizei minha webpart customizada no site, mas ao tentar inseri-la na página.

ERRO:

Ao implantar a solução e ativá-la, disponibilizei minha webpart customizada no site, mas ao tentar inseri-la na página, me deparei com o seguinte erro:

“A solicitação de execução de código em modo seguro foi recusada porque o Serviço de Host do Código em Modo Seguro estava muito ocupado para lidar com a solicitação.”

Para os que já se aventuraram com as soluções Sandboxed já perceberam que esse é um erro um tanto genérico.

Vale verificar se o serviço está ativo na Farm, na Central Administration. E se a solução está implantada no site, em Site Settings.

Neste caso, todos os serviços ativos e solução implantada. Ao analisar os LOGS do SharePoint, consegui os seguintes erros:

“Unable to activate worker process proxy object within the worker process: ipc://68f7d286-b8d9-4eca-9974-880c48c4ca67:7000”

“Error activating the worker process manager instance within the worker process. – Inner Exception: System.InvalidOperationException: Unable to activate worker process proxy object within the worker process: ipc://68f7d286-b8d9-4eca-9974-880c48c4ca67:7000 at Microsoft.SharePoint.UserCode.SPUserCodeWorkerProcess.CreateWorkerProcessProxies()”

SOLUÇÃO:

Com esses erros, tudo indicava que havia algum problema com serviço ou algo parecido. Com o um pouco de pesquisa descobri que o problema era com uma chave no registro, na conta que rodava o serviço.

Para resolver o problema, vá até o editor de registro e altera uma chave, como ilustrado abaixo.

1. Iniciar > Executar > Digite regedit

clip_image002

2. Navegue no registro até: HKEY_USERS\[SID da conta rodando o serviço]\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing

clip_image004

3. Altere o valor de “State” para “23e00”.

Com isso o serviço deve rodar normalmente.

DICA: Para saber o SID da conta, use o comando a seguir, no PowerShell (com snap-in do SharePoint 2010):

$(Get-SPManagedAccount -Identity "dominio\usuario").Sid.Value

Abraço!

Como listar todas as features instaladas na Farm do SharePoint

Olá! Smile

Overview:

O SharePoint, como muitos já conhecem, possui um conceito muito interessante de features (recursos), onde podemos disponibilizar, ou não, certas funcionalidades a um site. E, dependendo do escopo, falamos de Farm, Web Application, Site Collection (Site) e Site (Web).

Cenário:

Certo. E o que tem tudo isso? Se você ainda não passou por isso, CERTAMENTE vai passar.

Muitas vezes, em diversas ocasiões, precisamos responder questões como:

· Minha feature está instalada?

· Uma feature da Microsoft está instalada?

· Uma feature de terceiros (codeplex, por exemplo) está instalada?

· Qual o ID/Nome de uma feature específica?

SOLUÇÃO:

O caminho pode ser árduo para responder as questões acima. Mas, se você souber este simples comando abaixo, sua vida será demasiadamente mais fácil!

No SharePoint 2010 Management Shell (PowerShell com snap-in do SharePoint):

clip_image002

Digite:

Get-SPFeature | Sort –Property Scope, DisplayName

clip_image004

Ou

Get-SPFeature | Sort –Property Scope, DisplayName > c:\TodasFeaturesInstaladas.txt

Esta última opção cria um arquivo TXT para, talvez, melhorar a consulta.

clip_image006

Abraço!

 

Posts relacionados:

http://thiagottss.wordpress.com/2011/03/25/sharepoint-2010-features-e-seus-guids/

http://thiagottss.wordpress.com/2011/01/13/gerenciando-wsps-com-powershell-no-sharepoint-2010/

Follow

Get every new post delivered to your Inbox.

Join 128 other followers