Categorias
dicas iis plesk seguran??a windows

Recuperando a senha da conta identidade do Pool de Aplicativos do Plesk no IIS

Mais um t??tulo longo… um tanto confuso, mas em resposta a uma d??vida de um amigo:

“Exclui um Application Pool no IIS e nela estava configurada uma conta interna do Plesk: IWAM_plesk. N??o sei a senha utilizada. Tem como recuperar a senha para recriar um novo application?”

Sim! O Plesk sempre nos pregando aquela pe??a… Os dois pools que o Plesk utiliza est??o vinculados ?? conta IWAM_plesk (conta interna) para que possam manipular corretamente os arquivos e seus aplicativos (bem como as permiss??es necess??rias) no sistema operacional:

  1. plesk(default)(2.0)(pool)
  2. plesk(default)(4.0)(pool)

 Ent??o fa??amos as seguintes etapas:

  • Abra o Prompt de Comando em Modo Administrador;
  • Navegue para a pasta C:Windowssystem32inetsrv;
  • Execute o comando appcmd.exe list apppool ???plesk(default)(2.0)(pool)??? /text:*
Aparecer?? a descri????o completa desse pool. Procure a entrada referente ao usu??rio e senha do Plesk conforme a figura abaixo:
Agora voc?? tem a senha do usu??rio! No site de Dhiraj tem mais detalhes acerca desse tipo de recupera????o.
Categorias
crystal reports dicas

Calculando saldo final no Crystal Reports

Antes de come??ar o artigo, queria dizer que nesse m??s irei responder muitas das quest??es que recebo por e-mail (calma que um dia sempre respondo) em forma de artigo, ent??o muitos deles ser??o curtos e r??pidos. Uma das respostas ser?? nesse artigo.
Bem, como calculo o saldo, linha a linha, de entradas e sa??das no Crystal Reports? De forma bem simples: uso de vari??veis globais. Um bom artigo que sempre recomendo ?? o de Vince Varallo: n??o tem erro!
Supondo que voc?? tenha o seguinte relat??rio e com os respectivos campos:

Esses dados j?? devem ser puxados do DataSet utilizado (na d??vida, veja o post de criar relat??rios). Agora adicionamos um Formula Field com o nome SALDO.

Clique em Use Editor e escreva a seguinte f??rmula:

Global NumberVar SALDO_FINAL;

if (RECORDNUMBER = 1) then
    SALDO_FINAL := @ENTRADA – @SAIDA
else
    SALDO_FINAL := SALDO_FINAL + @ENTRADA – @SAIDA

Ou seja, na primeira linha obtenho o saldo inicial diminuindo a ENTRADA da SAIDA. Nos demais j?? adiciono o saldo anterior. Tranquilo? Agora basta adicionar no relat??rio esse campo criado.

Categorias
dicas host iis site web

Testando um Web-Site na pr??pria m??quina como se fosse externamente

Tentei elaborar um t??tulo de forma que ficasse entend??vel o que eu queria dizer. N??o sei se ajuda, mas significa que:

“Testaremos o acesso a um web-site que est?? publicado no IIS mas que no navegador n??o iremos usar localhost para busc??-lo e sim o pr??prio endere??o.”

Ficou bom agora? Ent??o vamos l??. No IIS crie um web-site. O processo ?? bem simples:

Pronto! J?? temos nosso site, mas se formos testar: http://thiagomarcal.com.br/ n??o encontra!

Por que isso? Quando queremos procurar um site, o sistema operacional analisa o hostname para saber onde encontrar esse endere??o: se for interno e mapeado usa-se a rede interna, sen??o procura a rede externa dentre outros. Como n??o existe o mapeamento e tampouco o dom??nio externo, n??o acha nada. Ent??o vamos alterar o arquivo de host.

Siga para o caminho: C:WindowsSystem32driversetc e abra o arquivo hosts, em modo texto, para adicionarmos algumas entradas.

# copyright (c) 1993-2009 microsoft corp.

#
# this is a sample hosts file used by microsoft tcp/ip for windows.
#
# this file contains the mappings of ip addresses to host names. each
# entry should be kept on an individual line. the ip address should
# be placed in the first column followed by the corresponding host name.
# the ip address and the host name should be separated by at least one
# space.
#
# additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# for example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

# localhost name resolution is handled within dns itself.
# 127.0.0.1 localhost
# ::1 localhost

127.0.0.1 thiagomarcal.com.br

Coloque, na ??ltima linha, o IP, tabula????o e nome do dom??nio nessa ordem para o site desejado. Salve e teste novamente o acesso. E pronto!

Mais f??cil do que isso: imposs??vel!

Categorias
dicas php visual studio web-service wsdl

Consumindo Web-Service PHP atrav??s do ASP.NET (C#)

J?? passou por aqui um post sobre de como consumir um web-service, mas era em ASP.NET. Agora como consumir um web-service em PHP? Da mesma forma. N??o muda! O fato de escrever esse post ?? apenas e pelo simples fato de ter um certo inconveniente na elabora????o do web-service em PHP.
Se procurar na net, recomendo o artigo de Maur??cio Reckziegel da iMasters que ?? muito bom e explica certinho como fazer. Se voc?? seguir ?? risca o que est?? escrito ir?? conseguir elaborar um web-service em PHP normalmente e ir?? conseguir consumir, menos em ASP.NET. N??o ?? que a mat??ria esteja errada, ?? porque o ASP.NET ?? chato com a valida????o do WSDL que ?? gerado pelo PHP. O documento (WSDL) tem que ser gerado na m??o e, quando n??o ?? gerado de forma autom??tica, estamos suscept??veis ao erro. Com o web-service em PHP ?? assim…
Ent??o, digamos que voc?? tenha elaborado o web-service em PHP e j?? fez refer??ncia na sua aplica????o. Contudo sua aplica????o pode dar erro ou retornar nada. Primeiramente, todo WSDL que iremos usar deve ser validado antes de ser devidamente consumido. O Visual Studio disp??e de uma ferramenta que valida e gera a classe consumidora (que n??o precisar ser usada pois est?? intr??nseco na ferramenta). V?? em Iniciar > Todos os Programas > Microsoft Visual StudioVisual Studio ToolsVisual Studio 2008 Command Prompt. Ir?? abrir um prompt de comando. Escreva por exemplo: wsdl http://thiagomarcal.blogspot.com/webservice.php?wsdl . Se der tudo certo, ir?? surgir um resultado semelhante a esse:

Se estiver tudo OK, ent??o pode usar tranquilamente, caso contr??rio ir?? surgir o seguinte problema:

Microsoft (R) Web Services Description Language Utility

[Microsoft (R) .NET Framework, Version 2.0.50727.3038]
Copyright (C) Microsoft Corporation. All rights reserved.

Warning: This web reference does not conform to WS-I Basic Profile v1.1.

Ou seja, o WSDL gerado pelo PHP n??o est?? conforme o padr??o. Dando uma alterada aqui e ali, podemos usar o seguinte c??digo para gerarmos o web-service em PHP dentro dos conformes:

<?php
// Requerimento aos componentes
require_once(‘nusoap/nusoap.php’);
include(“class.phpmailer.php”);
include(“class.smtp.php”);


// Cria????o da inst??ncia
$server = new soap_server();


// Registro do m??todo
$server->register(‘EnviaMail’);


// WSDL
$server->configureWSDL(‘server.EnviaMail’,’urn:server.EnviaMail’);
$server->wsdl->schemaTargetNamespace = ‘urn:server.EnviaMail’;
// registra o m??todo a ser oferecido
$server->register(‘EnviaMail’, //nome do m??todo
array(‘email’ => ‘xsd:string’), //par??metros de entrada
array(‘return’ => ‘xsd:string’), //par??metros de sa??da
‘urn:server.EnviaMail’, //namespace
‘urn:server.EnviaMail#EnviaMail’, //soapaction
‘rpc’, //style
‘literal’, //use
‘Retorna se o e-mail foi enviado’ //documenta????o do servi??o
);


// Defini????o do m??todo a ser utilizado
function EnviaMail($email) {
return “E-email enviado com sucesso!”;
}


// Requisi????o para uso do servi??o
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : ;
$server->service($HTTP_RAW_POST_DATA);
?>

Perceberam a diferen??a? Praticamente nenhuma, mas h??: o estilo do documento. N??o irei entrar em detalhes, mas dois tipos de documentos mais usados: encoded e literal (veja mais nesse artigo). Use literal! Com isso seu web-service ser?? consumido certinho…
Se estiver com o erro: O cliente encontrou o tipo conte??do de resposta de ‘ text/html; charset = utf-8 ‘, mas era esperado ‘text/xml’ ou The client find the answer ‘text/html’, but was expected ‘text/xml’. verifique se seu web-service est?? imprimindo conte??do HTML (echo) e comprometendo o retorno dos dados. Tranquilo, n???

Categorias
banco de dados desempenho dicas sql server

Problemas de cache no SQL Server

Se voc?? estiver recebendo uma mensagem do tipo:

O SQL Server encontrou %d ocorr??ncia(s) de libera????o de armazenamento em cache para o cache ‘%s’ (parte do cache do esquema) devido ?? manuten????o do banco de dados ou opera????es de reconfigura????o.

ou

SQL Server has encountered %d occurrence(s) of cachestore flush for the ‘%s’ cachestore (part of plan cache) due to some database maintenance or reconfigure operations.

?? porque, segundo a MSDN, ao limpar o cache do plano gera uma recompila????o de todos os planos de execu????o subseq??entes e pode provocar uma queda repentina e tempor??ria no desempenho da consulta. Para cada armazenamento em cache limpo no cache do plano, aparece a mensagem supracitada.

Para resolver isso, basta ir no banco correspondente, clicar com o direito sobre ele e escolher Properties (Propriedades). Entre em Options (Op????es) e configure o Auto-Close (Fechamento Autom??tico) para False.

Categorias
asp erros iis seguran??a web.config

Error 500 Internal Server Error – Como descobrir o problema

Quando d?? esse erro muitas pessoas tremem s?? de ver! Abaixo darei uma dica para quem ?? marinheiro de primeira viagem e se depara com isso.

Essa tela ?? gerada pelo IIS para camuflar o erro para o usu??rio. Se a aplica????o n??o for bem tratada quanto a erros, esse ?? o ??ltimo recurso que o IIS faz para n??o exibir o erro na tela. Seria bem inc??modo para o usu??rio ver na tela o erro de seu site, por exemplo. Para quem est?? gerenciando a aplica????o ?? inc??modo at?? certa parte, pois muitas vezes o desenvolvedor resolve o problema mais olhando o erro do que analisando log, events, etc. Pois bem, vamos l??!

Abra o IIS e procure pela fun????o Error Pages (P??ginas de Erro) no m??dulo IIS. Entre e procure pelo link Edit Resource  Settings (Editar Configura????es de Recurso). Ao abrir, a tela de Edit Error Pages Settings (Editar Configura????es de P??gina de Erro) escolha a op????o Detailed errors (Erros detalhados) e OK.

Ou, mais especificamente para o ASP.NET, procure a fun????o .NET Error Pages (P??ginas de Erro do .NET) no m??dulo ASP.NET. Entre e procure pelo link Edit Resource  Settings (Editar Configura????es de Recurso). Ao abrir, a tela de Edit Error Pages Settings (Editar Configura????es de P??gina de Erro) escolha a op????o Desactive (Desativar) e OK.

Com isso, a depender do erro, j?? estar??o sendo enviados para a tela. Lembram do post sobre seguran??a? No web.config, deixe o customErrors com o atributo mode=”Off” caso necess??rio para que os erros sejam exibidos.

Caso ainda n??o tenha descoberto o problema, acesse a configura????o do ASP  no m??dulo IIS. Expanda a propriedade Debugging Properties (Propriedades de Depura????o) e coloque como True a fun????o Send Errors to Browser (Enviar Erros ao Navegador).

Isso deve ser mais do que o suficiente para exibir o erro e identificar qual o problema est?? na aplica????o. Lembrando que, se prefer??vel, n??o deixar o erro ser exibido para o cliente. Deve-se fazer o poss??vel para tratar e localizar adequadamente o problema. Seguran??a em primeiro lugar!

Categorias
cufon dicas javascript jquery master page

Cufon na Master Page

Para quem est?? com problemas no carregamento/aplica????o do Cufon quando estiver usando Master Page, chame-o da seguinte forma:

<script>
Cufon.now();
function pageLoad(sender, args) {
      Cufon.refresh();
}
</script>

Assim ele aplica corretamente ap??s o carregamento da p??gina.

Categorias
ajax dicas

Out of Memory at Line – Mem??ria Insuficiente

Dica r??pida para quem tiver esse tipo de problema: remova o atributo LoadScriptsBeforeUI=’false’ from ScriptManager. Dentro de Grid edit??veis ou em formul??rios din??micos a valida????o do Javascript falha quando estiver fazendo esse tipo de otimiza????o.

Categorias
analytics api google integra????o

Integra????o ASP.NET (C#) com o Google Analytics

Nesse artigo irei demonstrar como fazer consultas no Google Analytics, de um determinado site, para ser usado em c??lculos estat??sticos afim de gerar gr??ficos semelhantes. Ou seja, irei demonstrar como fazer a consulta e retornar os dados. Os gr??ficos e exposi????o dos dados ficar?? ao seu crit??rio. Ao final poder?? ter algo assim:

Primeiramente e ??bvio, ?? preciso dos dados da conta Google como o e-mail e senha para autentica????o. Cada site cadastrado no Analytics tem um ID do Perfil e ele pode ser localizado na seguinte p??gina  de Configura????es do Perfil. Atrav??s desse Id ?? que consultamos os dados de um determinado site.

Com esses dados em m??os, vamos ao entendimento da integra????o. O Google disponibilizou um framework que auxilia na consulta e retorno de dados em .NET e ela pode ser baixada no Google GData. Dentro dela cont??m v??rios bin??rios mas precisaremos apenas dos seguintes:

  1. Google.GData.Analytics.dll
  2. Google.GData.Client.dll
  3. Google.GData.Extensions.dll

Adicione-os ao seu projeto. Mas antes de come??ar a programar isso, vamos ao entendimento das consultas realizadas. No link http://code.google.com/intl/pt-BR/apis/analytics/docs/gdata/gdataExplorer.html tem um simulador que ser?? similar ?? consulta feita pela sua aplica????o. J?? no link http://code.google.com/intl/pt-BR/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html cont??m toda as especifica????es necess??rias.
Como n??o gosto de perder tempo e, para muitos pode ser um pouco confuso o seu entendimento logo de cara, vamos fazer uma abstra????o:

  • ids: ?? o ID do Perfil conforme vimos anteriormente;
  • dimensions: vamos “acatar” que seja os relacionamentos (linhas)  (n??o ?? obrigat??rio);
  • metrics: vamos “acatar” que seja o que deseja buscar (colunas);
  • segment: especifica????o do tipo de consulta (n??o ?? obrigat??rio); 
  • filters: ?? o WHERE da consulta (n??o ?? obrigat??rio);
  • sort: ordena????o  (n??o ?? obrigat??rio);
  • start-date: data de in??cio (formato yyyy-MM-dd);
  • end-date: data final (formato yyyy-MM-dd);
  • start-index: serve para paginar dados (como o MySQL usa o LIMIT);
  • max-result: quantidade m??xima de registros retornados.

Essa ?? a explica????o mais entend??vel poss??vel e que posso passar para voc??s. Logo, antes de botar a m??o na massa, sugiro fazer v??rias simula????es e ver como ?? retornado os objetos. De acordo com a simula????o que fiz, por exemplo, e de acordo com a figura seria a seguinte busca:

“Me retorne todas as cidades, que visitaram meu blog, com suas respectivas quantidades de visitas no per??odo de 03/07/2011 a 17/07/2011 ordenada por cidade. S?? me traga os 50 primeiros registros.”

Ent??o, me seria retornado a seguinte “tabela”:

Ficou claro? Tranquilo, n??? A pior parte j?? passou. Agora, porqu?? escrevi “tabela”… Porque n??o ??! Lembra que abstra??mos para que seja isso. Sabendo de como a API trabalha ent??o bastemos implementar. Vamos l??! Pode-se criar uma classe ou incorporar na mesma p??gina o c??digo. Fica a seu crit??rio!

Adicione os seguintes namespaces:

using Google.Analytics;
using Google.GData.Analytics;
using Google.GData.Client;
using Google.GData.Extensions;

Tamb??m as vari??veis abaixo s??o necess??rias para a devida autentica????o e consulta nas quais descrevem:

// Vari??veis
string user; // Usu??rio da Conta Google Analytics
string pass; // Senha  da Conta Google Analytics
string id_tabela; // ID do Perfil

// Inicializa????o
user = “email@gmail.com”;
pass = “senha”;
id_tabela = “ga:30897221”; // Tem que colocar a string “ga” na frete do ID do Perfil

Agora adicione os seguinte m??todos:

/// <summary>
/// Consulta o Analytics
/// </summary>
/// <param name=”query”></param>
    private DataFeed ConsultaAnalytics(DataQuery query)
    {
        AnalyticsService asv = new AnalyticsService(“gaExportAPI_acctSample_v2.0”);
        asv.setUserCredentials(user, pass);
        String baseUrl = “https://www.google.com/analytics/feeds/data”;
        query.Ids = id_tabela;
        query.Uri = new Uri(baseUrl);
        return asv.Query(query);
    }


/// <summary>
/// Retorna o resultado da consulta
/// </summary>
/// <param name=”query”></param>
/// <returns></returns>
    private DataTable RetornaTabela(DataQuery query)
    {
        DataTable resultado = new DataTable();
        DataFeed feed = ConsultaAnalytics(query);
        if (feed.Entries.Count > 0)
        {
            // Cria as colunas
            DataEntry colunEntry = feed.Entries[0] as DataEntry;
            foreach (Dimension colundimension in colunEntry.Dimensions)
                resultado.Columns.Add(new DataColumn(colundimension.Name.Substring(3)));
            foreach (Metric colunmetric in colunEntry.Metrics)
                resultado.Columns.Add(new DataColumn(colunmetric.Name.Substring(3)));          


            // Insere os dados
            foreach (DataEntry singleEntry in feed.Entries)
            {
                DataRow rw = resultado.NewRow();
                foreach (Metric metric in singleEntry.Metrics)
                    rw[metric.Name.Substring(3)] = metric.Value;
                foreach (Dimension dimension in singleEntry.Dimensions)
                    rw[dimension.Name.Substring(3)] = dimension.Value;
                resultado.Rows.Add(rw);
            }
        }
        return resultado;
    }

??bvio que essas s??o apenas sugest??es de implementa????es e voc?? podem mudar o quanto achar melhor a depender de sua unidade de neg??cio. Agora vamos fazer aquela consulta:

        // Dados da consulta
        DataQuery q = new DataQuery();
        q.Dimensions = “ga:city”;
        q.Metrics = “ga:visits”;
        q.GAStartDate = DateTime.Parse(“03/07/2011”).ToString(“yyyy-MM-dd”);
        q.GAEndDate = DateTime.Parse(“17/07/2011”).ToString(“yyyy-MM-dd”);
        q.Sort = “ga:city;
        q.NumberToRetrieve = 50;


        // Resultado
        DataTable resultado = RetornaTabela(q);

Pronto! Ir?? me retornar um DataTable com aquela tabela de dados. Basicamente todas aquelas informa????es que voc?? v?? no Analytics s??o vindas em formato tabela e que, posteriormente, s??o feitos tratamentos e c??lculos sobre eles. Como disse no in??cio do artigo, agora basta usar a tabela de dados conforme desejar…
Espero que tenham gostado depois de um tempo sem postar nada…

Categorias
banco de dados cloud server crystal reports dll erros iis locaweb plesk sql server windows

Mega Post de Erros

Lidar com erros ?? algo realmente muito chato… Chato demais! Esses dias fui convocado para fazer um certo trabalho de migra????o entre servidores. Um desses servidores era um Cloud Server Pro da Locaweb. Em muitos posts que aqui escrevi tem um pouco retratando sobre a Locaweb. Trabalho e j?? trabalhei muito com ela e sei de todos os seus passos e “artimanhas” de atendimento… O antigo Cloud Server foi at?? tranquilo de trabalhar, mas esse novo… Vamos aos problemas!

Uma dica que dou sempre quando algu??m quer contratar um servidor: leiam muito sobre os pr??s e contras. Os pr??s vejam no pr??prio site do prestador, os contras vejam nos relatos de usu??rios. No post a seguir n??o estou jogando a Locaweb contra a parede, apenas estou expondo erros que podem ser sanados de forma f??cil mas que burocraticamente ?? jogado para o cliente se virar (nos 30!).

Nesse Cloud Server vem embutido o Plesk. Em poucas palavras serve para gerenciar a hospedagem atrav??s de uma interface web. ?? uma boa ferramenta de ger??ncia, tem tudo para gerenciar sua hospedagem. S?? que esse demais gera ocupa????o demais (redund??ncia) de espa??o em disco. Dos 50 Gb que voc?? contrata, 40Gb ?? para o sistema operacional e 10Gb para seus arquivos. Sendo que dos 10Gb ?? para todos os seus arquivos, e-mails, banco de dados, etc. Ou seja, apenas usufrui dos 10Gb um pouco menos que 9Gb e olhe l??.

Bem, dizem que vem tudo preparado e instalado para usar… Verdade at?? certa parte! Quem est?? usando e ?? iniciante vai ver que ?? mil maravilhas. D?? para fazer o b??sico de tudo. O problema vem a seguir…

Um cliente contratou o Cloud Server gerenciado pelo cliente (ou seja, sobrou para o usu??rio final) e me passou para configurar e deixar no ponto de uso fazendo toda a migra????o e instala????o. Em um passe de m??gica surgem os problemas…

Os bancos de dados que vem s??o o MS SQL Server 2008 e o MySQL. N??o h?? interface para dump e recovery das bases for??ando a usar o Plesk para isso, mas n??o queria. Onde est?? o Management Studio 2008? Onde est?? o MySQL Workbench? Como vou fazer para migrar as bases? Gerar script de bancos gigantes? Nem pensar! Preciso instalar!

Mas como instalar esses aplicativos? Se fazer download, gera tr??fego. Se pedir para a Locaweb tem que pagar e se pedir, de gra??a, n??o instala! Lembrando que esses aplicativos, no m??nimo, s??o gratuitos e deveriam estar em uma zona em que os usu??rios pudessem obt??-los de forma f??cil e sem cobran??a. Pois bem, feito o download, hora de instalar. Abrindo o execut??vel (lembrando que tem que ser a da vers??o 64bits) d?? aviso de incompatibilidade. ?? preciso instalar o Service Pack 1 do SQL Server 2008 (mais tr??fego). Baixado o SP1 ?? preciso instal??-lo. Tranquilo e instalado sem problemas. Hora de instalar o Management Studio

Ao tentar abrir, outro problema?!?! ?? preciso do Framework 3.5! Incrivel… No Cloud Server vem instalado a vers??o 2.0 e 4.0 do Framework ASP.NET mas n??o tem a 3.5 ativado. Menos mal, porque no Windows Server 2008 ?? nativo, basta ativar. Realize os seguintes passos (retirado do Wiki):

  1. Clique em Start, Administrative Tools e selecione Server Manager;
  2. Na interface, clique em Features e clique em Add Features;
  3. Selecione a primeira op????o .NET Framework 3.5.1 Features e adicione todos seus dependentes;
  4. Conclua a instala????o do Framework.

Agora sim, tudo pronto! Vamos instalar o Management Studio. Clica no instalador e… Erro! Caramba… de novo!

TITLE: SQL Server Setup failure.
——————————-


SQL Server Setup has encountered the following error:


Invoke or BeginInvoke cannot be called on a control until the window handle has been created.

A dica ??: feche o Windows Explorer! Por algum motivo, a instala????o do Management Studio n??o inicia quando o Windows Explorer estiver em aberto. Copie para a ??rea de Trabalho e abra o instalador… Agora sim! Depois de tanta malemol??ncia pelo menos iniciemos a instala????o. Para quem tem d??vidas e um passo-a-passo bem explicativo de como instalar o Management Studio, acesse aqui o post de Marcos dell Antonio. H?? uma dica bem interessante que pode confundir o usu??rio na hora da instala????o. Terminado a instala????o, menos um item da lista de afazeres.

Consegui conectar ao SQL Server local, criei as bases, usu??rios, fiz restores, configurei o backup, providenciei tudo o que tinha que fazer onde o Plesk jamais pensaria em um dia ser. Agora o principal, testar um website. Publiquei o site no IIS e abri o navegador para visualizar. Erro!

Could not load type ‘System.ServiceModel.Activation.HttpModule’ from assembly ‘System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089’.

Sabe o porqu?? disso? Eu instalei o ASP.NET 3.5 depois que eu j?? tinha a vers??o 4.0 instalada por causa do Management Studio ent??o gerou conflito nas DLL’s. Para resolver, fa??a o seguinte:

  1. V?? para a pasta C:WindowsMicrosoft.NETFramework64v4.0.30319;
  2. Execute o comando aspnet_regiis.exe -iru

Agora vamos testar! Abri o navegador e digitei o endere??o e… Mais erro!

There is a duplicate ‘system.web.extensions/scripting/scriptResourceHandler’ section defined

Mais conflitos! Se voc?? tiver outra vers??o do System.Web.Extensions instalado, devido ao ASP.NET AJAX por exemplo, a vers??o que est?? no GAC do sistema difere da que voc?? quer chamar ocorrendo ambiguidade. O correto seria alterar os assemblys mas como isso ?? muito trabalhoso e pode acontecer algum imprevisto para aqueles que n??o sabem manuse??-las, ent??o aconselho o seguinte: remova toda a sectionGroup do seu web.config ou comente-as:

<!–
<sectionGroup name=”system.web.extensions” type=”System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″>
<sectionGroup name=”scripting” type=”System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″>
<section name=”scriptResourceHandler” type=”System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ requirePermission=”false” allowDefinition=”MachineToApplication” />
<sectionGroup name=”webServices” type=”System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″>
<section name=”jsonSerialization” type=”System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ requirePermission=”false” allowDefinition=”Everywhere” />
<section name=”profileService” type=”System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ requirePermission=”false” allowDefinition=”MachineToApplication” />
<section name=”authenticationService” type=”System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35″ requirePermission=”false” allowDefinition=”MachineToApplication” />
</sectionGroup>
</sectionGroup>
</sectionGroup>
–>

No caso comentei o sectionGroup do System.Web.Extension que pode estar na vers??o 1.0, 2.0 ou 3.5 que for.

Agora vamos l??! De p??s juntos e m??os dadas: Abre o navegador e… e… e… Funcionou! Depois de um ??rduo trabalho aparentemente tudo estava normal. Vamos testar outros sites e… e… e… Mais erros!

Quem ainda n??o est?? acostumado a trabalhar com Windows Server 2008 e IIS 7 ter?? que aprender muito sobre permiss??es e tratamento de erros. Incontestavelmente a tela do erro 500 ir?? aparecer e muito se sua aplica????o n??o estiver configurada adequadamente para o IIS 7. Nem sempre a mesma aplica????o que est?? no IIS 6 ir?? funcionar no IIS 7. Ent??o eis que surge a tela do Erro 500 Erro Interno do Servidor ou Error 500 Internal Server Error:



Ou ent??o:

D?? para descobrir o que ??? Vou dar a dica: revise seu web.config. “Ah, mas est?? tudo certo, n??o sei porque n??o funciona…”. Engano, est?? errado. J?? disse que o IIS 7 ?? chato, muito chato. O parser dele ?? muito minucioso e se n??o estiver nos padr??es vai dar problema.

Se voc?? n??o sabe utilizar bem o IIS e tem medo de alterar uma coisinha ali e outra acol?? vou dar a maior dica: saia abrindo cada op????o do painel da aplica????o at?? que uma delas acuse um erro de configura????o.

Por exemplo, abra o item Documento Padr??o. Se ele estiver configurado corretamente ent??o abrir?? a pr??xima tela normalmente. Se tiver algum erro, aparecer?? um alerta. Ent??o no web.config voc?? deve corrigir a sess??o correspondente. Ficou claro? Saia clicando um a um at?? que um deles se denuncie podendo ent??o fazer a corre????o.

O que ocorreu comigo foi que um site que estava no IIS 6 podia colocar a mesma p??gina (index.aspx) como padr??o, duas vezes, e n??o tinha problema. Quando foi para o IIS 7, na qual estava herdando a configura????o pai, e foi adicionar a p??gina index.aspx como padr??o novamente, ele dava erro e n??o sabia porqu??. Ent??o removi a entrada do web.config e funcionou. Desabilitar a mensagem de erro amig??vel no navegador vai funcionar (encontrar o erro)? N??o. Desabilitar as p??ginas de erros personaliz??veis do IIS vai funcionar (encontrar o erro)? Talvez ou n??o. Depende muito do ambiente que est?? configurado e quem est?? manipulando.

Pronto! Mais um problema solucionado… Vamos testar outro site e… e… e… Erro! Agora aconteceu um erro 404. Mas como? Erro 404 de p??gina n??o encontrada mas se o caminho est?? l??? Incrivelmente no IIS do Cloud Server possuem dois Applications Pools do Plesk (e mais outros nativos): Plesk(default)(2.0) e Plesk(default)(4.0). O pool do 2.0 quase nem sempre funciona. E um comportamento anormal ?? que se voc?? tem um site pai em 2.0 e um filho em 2.0 ??s vezes p??ra de funcionar. O “correto” ?? ter um pai 2.0 ou 4.0 com filho sempre 4.0. Estranho? Pode crer! E onde est?? o pool do 3.5? Tem que criar na m??o mesmo.

Nota: Se voc?? reiniciar o IIS o Plesk p??ra de vez e n??o volta:

Voc?? ter?? que inici??-lo manualmente. Mas antes ter?? que iniciar seu pool tamb??m (que ?? muito suspeito):

 Ajeitado uma coisinha ali, outra aqui, vamos testar mais algumas coisas e… e… e… Quase tudo certo. Em quest??o de funcionalidade (que deveria ser) est?? quase tudo certo a n??o ser o funcionamento do bom e velho Crystal Reports. Quem j?? leu o post de erros do Crystal aqui e aqui nos deparamos com o erro:

O inicializador de tipo de ‘CrystalDecisions.CrystalReports.Engine.ReportDocument’ acionou uma exce????o

ou

The type initializer for ‘CrystalDecisions.CrystalReports.Engine.ReportDocument’ threw an exception

Cuidado! Esse n??o ?? o descritivo do erro. S?? com isso n??o d?? para saber o motivo. Fa??a o debug, log,  exibi????o da pilha ou na pr??pria tela exiba o erro (sem ter AJAX) que teremos o erro completo. No link dos dois posts anteriores que fiz explica o problema do Crystal na plataforma 64bits e como pode resolver. S?? que o problema no meu caso era permiss??o.

Server Error in ‘/virtual_directory_name’ Application.
Error in File UNKNOWN.RPT:
The request could not be submitted for background processing.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.


Exception Details: System.Runtime.InteropServices.COMException: Error in File UNKNOWN.RPT: The request could not be submitted for background processing.

Os usu??rios listados abaixo, n??o tinham permiss??o na execu????o de scripts DCOM e grava????o em algumas pastas (principalmente as que est??o na unidade C):

  • IWAN_plesk(default)
  • IUSR
  • IIS_IUSR
  • NETWORK SERVICE
  • INTERACTIVE

Esses s??o os usu??rios que devem ter privil??gio (descritos abaixo) nas pastas listadas abaixo:

  • C:WindowsTemp : leitura escrita
  • C:Program Files (x86)Business ObjectsCommon2.8bin : leitura
  • C: : leitura

Obs: Para alguns servidores ?? preciso aplicar o Replace permission entries on all child objects nessas pastas.

Lembrando de reiniciar o IIS e/ou o servidor para recarregar as configura????es.

Se estiver trabalhando com Windows Service ou Windows Form e ocorra o erro:

System.IO.FileNotFoundException: Retrieving the COM class factory for component with CLSID {5FF57840-5172-4482-9CA3-541C7878AE0F} failed due to the following error: 8007007e

Basta compilar sua aplica????o em x86.

E agora, tudo certo? At?? o momento sim. Porque n??o dizer que est?? tudo OK? Depois de ter ocorrido todos esses problemas, fica-se receoso com o futuro. Pode ser que ocorra outro problema posteriormente? Sim e ir??.

Conforme disse anteriormente, o post n??o ?? para dizer mal sobre a Locaweb e/ou Plesk. Acho que eles prestam um servi??o adequado para o n??vel nacional (at?? uso) contudo s??o coisas que acontecem que simplesmente poderiam ser sanadas antes de jogar o pepino para o cliente. Se voc?? tiver algum problema desses e sua ger??ncia for pelo cliente, nem adianta pedir que eles v??o lhe informar: “o gerenciamento ?? por conta do cliente e n??o nos responsabilizamos” ou “a ferramenta (Plesk) ?? terceirizada e n??o prestamos suporte.”. Enfim, espero que o post ajude a voc??, cliente e usu??rio, a corrigir seus problemas/pepinos que ocorrerem. Isso me lembra quando lan??ou o plug-and-play… a velha piadinha do plug-and-pray (ligar e rezar) n??o some da cabe??a quando ocorre esse tipo de problema. Porque ser???