Erros comuns em ASP

De Wiki Locaweb
Ir para: navegação, pesquisa

Abaixo listamos os erros mais freqüentes do ASP e suas possíveis soluções:

Erros e Possíveis Solucões

O nome da DSN utilizada não existe ou está incorreto. Sugerimos que verifique em sua programação se o nome está mesmo correto.
Geralmente o banco de dados encontra-se em uma pasta que não possui permissão de "Escrita", neste caso basta aplicar esta permissão no diretório onde a base encontra-se conforme descrito em Alterando a permissão de pastas em Windows

Este problema também ocorre em alguns casos quando a base de dados não existe ou o caminho esta errado.

Do contrário, procure alterar o driver de conexão para OLEDB como neste artigo String's de conexão para ASP e ASP.Net
Verifique se o endereço da base de dados está mesmo correto em sua programação. Persistindo o problema, abra um chamado na sua Central do Cliente na categoria SQL, mencionando a localização exata (link/URL) da página que contém este erro para que possamos identificar o motivo da falha.
Este erro ocorre quando o diretório ou o arquivo não tem permissão de escrita. Você pode alterar as permissões através do Painel de Controle, saiba como consultando esse artigo.
Recomendamos a utilização do driver OLEDB.
Este erro ocorre quando o tipo do campo na base de dados é pequeno para os dados informados. Portanto será necessário alterar a estrutura da base de dados ou alocar menos dados no campo com problemas.
Este erro ocorre quando o tamanho da base de dados é excedido. Sugerimos que compacte sua base de dados utilizando a Query:
dbcc shrinkdatabase ()
Este erro ocorre quando há um excesso de parâmetros informados em uma instrução à base de dados.
Este erro ocorre quando o campo do objeto recordset consultado está vazio ou quando ele está no final.


No Windows Server 2012, caso utilize uma definição de valor nulo > 0, ajuste para < 0 a fim de que a aplicação consiga interpretar tal definição.

Exemplo:

If ( ... .CursorType > 0) Then

Para funcionar, mude o argumento para menor:

If ( ... .CursorType < 0) Then


Com o ajuste feito, a aplicação ASP que usa o termo nulo para Sql em consulta com a Base Access passa a funcionar.
A string de conexão pode estar com a palavra datasource (juntos), altere para: data source.
Este erro pode ocorrer ao tentar inserir mais dados do que é permitido em um campo (por exemplo, se tentar inserir 26 caracteres em um campo formatado para aceitar somente 25 caracteres). Neste caso verifique a estrutura de sua base de dados ou sua programação.
O LockType que está utilizando em seu objeto recordset não permite edição nos dados do mesmo, sugerimos que utilize outro tipo de LockType.
O erro ocorre se na programação do arquivo estiver usando a opção Option Explicit, o que força a declaração das variáveis usadas, e a variável VAR1 não foi declarada.
Ocorre quando o componente que está sendo instanciado não está instalado no servidor. Consulte nossa lista de componentes para verificar algum similar ou que realize o processo desejado.
Ocorre quando seu objeto de envio de e-mail tenta enviar um e-mail mal formatado, ou seja, um e-mail com caracteres inválidos ou acentuação.
Será apresentado esta mensagem de erro em casos onde o arquivo de include declarado em sua programação não seja localizado no diretório da área de hospedagem, verifique se o arquivo se encontra no local informado ou verifique se o nome do arquivo na linha de include está correto.
Este erro ocorre quando o limite de memória destinada para o processamento de uma página ASP é excedido (ASPBufferingLimit = 4MB).

Para resolver esta dificuldade, é necessário verificar se há possibilidade de minimizar o consumo de memória efetuado pela página ASP.

Caso o resultado da página seja algo que pode ser apresentado no navegador em partes (como um relatório ou uma lista), sugerimos que utilize a instrução abaixo no meio no código ou onde haja um looping:

<%
Response.Flush()
%>
Este erro ocorre em páginas ASP quando buscamos o nome de um campo inexistente na consulta com a base de dados.

Neste caso é necessário verificar a programação e estrutura do banco de dados.
Esta mensagem de erro é apresentada, quando o script esta demorando muito tempo para ser executado(um loop infinito por exemplo) e acaba excedendo o tempo limite de execução de scripts(ScriptTimeOut) que é de 90 segundos(padrão do IIS).

Para que este problema não ocorra, é necessário que procure fazer o seguinte:
  • Caso o site/script tenha sofrido alguma atualização recente, torna-se necessário rever a programação em busca de falhas e/ou otimizações no código para que o mesmo possa ser executado rapidamente
  • Se o site estiver utilizando uma ou mais bases de dados do tipo Access, procure substituir por um banco de dados de melhor performance como o MySQL (incluso no plano) ou mesmo MS-SQL
Este problema esta vinculado com permissão para o usuário do IIS IUSR_, normalmente utilizando banco .mdb, de permissão de escrita no diretório onde encontra-se o banco/web
Este problema ocorre ao executar uma query em um banco de dados MS SQL Server que demora mais de 30 segundos, para resolver este problema defina o timeout logo após abrir a conexão, com a linha 'conexao.CommandTimeout = 90' sendo 'conexão' substituído pelo nome que você instanciou o objeto de conexão, conforme abaixo:
    conexao.Open stringConexao
    conexao.CommandTimeout = 90
Este é um erro genérico, normalmente ocorre quando há muitas solicitações no Access, sobrecarregando a aplicação ou devido a ausência de permissões.

Existem algumas maneiras de evitar isto:

  1. Desativar a propriedade loadUserProfile, modificar o ficheiro applicationHost Config.
  2.     <applicationPoolDefaults>
            <processModel identityType="NetworkService" loadUserProfile="false" />
        </applicationPoolDefaults>

  3. Sempre feche o conjunto de registros e os arquivos de conexão.
  4.    Do Until oRS.EOF
        'realize seus procedimentos...
        oRS.MoveNext
       Loop
     
    'Sempre feche depois de usar
    oRS.Close
    Set oRS = Nothing

  5. Páginas que usam redirect.
  6.     If oRS.EOF Then
        'Sempre feche depois de usar
        oRS.Close
        Set oRS = Nothing
     
        Response.Redirect("Error.asp?v=nouser")
        End If
     
    'realize seus procedimentos
     
    'Sempre feche depois de usar
    oRS.Close
    Set oRS = Nothing
A conta usada no acesso à página não tem acesso à chave do Registro HKEY_LOCAL_MACHINE\SOFTWARE\ODBC.
Neste caso você poderá configurar a DSN no painel, conforme a wiki a seguir

Isto funciona apenas para os planos de Hospedagem Profissional I, II e III e Profissional Premium e em Windows 2003. No windows 2008 não é possível a criação de DSN.

Por motivos de performance/facilidade na administração do site, recomendamos fortemente que você procure utilizar conexões do tipo OLED no seu site. Apesar de disponibilizarmos a opção para você configurar uma DSN(ODBC), a mesma existe mais por motivos de compatibilidade com sites oriundos de outros provedores que já utilizam este procedimento. Não criamos DSN para conexão com Banco SQL Server ou MySQL por questões de Performance e Administrativas.

Em caso de problemas neste processo de configuração da DSN você pode abrir um chamado na sua Central do Cliente


Dicas de programação

http://www.w3schools.com/
http://www.imasters.com.br/


Veja também