Array
(
)

Erro estranho, muito estranho, ASP.NET/C# System.IndexOutOfR

Abreufkb
   - 25 set 2009

Pessoal estou começando a ficar com medo, acontece que o site da empresa onde trabalho de repente para de funcionar e simplismente da um erro loko na tela como por exemplo: System.IndexOutOfRagenException

O estranho é que o site esta normal, e de repente, para!.

Para voltar eu vou no servidor e digito no cmd do windows: iireset /restart.

Pronto ele volta a funcionar, o problema é que somos uma faculdade e o acesso ao site é bem grande, uma média de 400 a 1000 visitas ao dia e isso está me dando dor de cabeça.

Outra coisa, quando o erro aparece na tela e eu dou um f5 aparece o mesmo erro porem num arquivo dirente com linhas diferentes.
Pô sou programador PHP há 6 anos e faz +/- 1 ano e meio que estou no asp.net /C e não tenho a minima ideia do que esteja acontecendo, e porque que quando reinicio o server ele volta?.

Outro detalhe é que eu já fiz a troca de servidor, tenho 4 windows 2003 server aqui na Faculdade e ja passei pros 4 e em todos eles, o problema aparece.

O Servidor atual é um IBM xeon, 4gb de ram, e uma HD SAS 320 gb.
Enfim acredito que não seja o servidor meu problema, acho que em algum trecho do codigo eu esteja comendo bola, e pelo fato de ser algum trecho que não seja executado a todo momento, ele da esse erro de epoca em epoca, mas não sei como acha-lo(se for mesmo esse o problema).

Tirei 3 prints de 3 erros diferentes que deram agora a pouco.

Por favor pessoal me ajude, estou desesperado!!!!!!!!

Erro1: Clique na imagem para abrir em uma nova janela
Erro2: Clique na imagem para abrir em uma nova janela
Erro2: Clique na imagem para abrir em uma nova janela


Ara.es
   - 28 set 2009

abreuFKB, esse erro costuma acontecer quando se tenta acessar um array, ou qualquer outro objeto que é acessado por indice, e esse indice é menor que zero ou maior que o maximo permitido.

Verifique se em alguma parte da programação, alguma array ou outro objeto está sendo acessado incorretamente.

Flw!


Katiuscia Schröer
   - 29 set 2009

abreuFKB não sei se ja conseguiu a solução do seu problema, mas viu eu ja tive um problema parecido. Eu tinha uns sites q eram bastante acessados e do nada a pagina parava de funcionar.
Só que o meu problema estava na web.config, na string de conexão com o banco. Eu estava usando o banco sql server 2005.




abrc...


Abreufkb
   - 29 set 2009

Katy, eh exatamente isso, eu estou com Sql Server 2005 e estou fazendo conexao via web.config.

Na sexta feira a noite, eu criei um usuario para o banco do Site com o nome ´FKBSite´, onde o mesmo tem acesso somente ao banco do Site, e experimentei fazer a conexao com esse usuario, pois antes eu usava o usuario ´sa´.

Fiquei super feliz pois o site ficou o final de semana todo sem cair, porém hoje veio a decepção, ele caiu de novo, simplismente parou, com aquele erro loko que mencionei anteriormente.

Reiniciei o IIS e até agora o site esta no ar, acho que não adiantou muita coisa a minha tentativa.

Você disse que tinha um problema na sua string de conexão, vou postar a minha pra vc dar uma olhada, de repente ela esta errada também.

<add name=´ConexaoUm´ connectionString=´Server=localhost; Database=FKBsite; user=FkbSite; password=gr@ndia2005;´
providerName=´System.Data.SqlClient´ />

Pessoal, obrigado pela atenção, se precisar de qualquer coisa estou disponivel


Katiuscia Schröer
   - 30 set 2009

Abreu, tenta colocar na sua string de conexão isso que está em negrito, se não me enago depois que coloquei isso não deu mais problema.

<add name=´Teste´ connectionString=´Min Pool Size=5;Max Pool Size=250;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true´ providerName=´System.Data.SqlClient´ />

Espero que ajude.

t+


Katiuscia Schröer
   - 30 set 2009

Abreu, tenta colocar na sua string de conexão isso que está em negrito, se não me enago depois que coloquei isso não deu mais problema.

<add name=´Teste´ connectionString=´Min Pool Size=5;Max Pool Size=250;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true´ providerName=´System.Data.SqlClient´ />

Espero que ajude.

t+


Abreufkb
   - 02 out 2009

Pessoal agora com menos frequencia o problema ainda esta ocorrendo.

Não sei mais o que fazer, preciso muito de ajuda, estou desesperado, pensando seriamente em iniciar um projeto para passar essa minha aplicação para php.

Não posso ficar com a aplicação dando pau assim, do nada o maluco para de funcionar, ai tenho q me conectar remotamente no server e reiniciar o IIS.

Por favor se alguem puder me ajudar!!!!!


Abreufkb
   - 05 out 2009

Hoje por volta das 22:00 (dia 05 out 2009) o erro voltou a aparecer, do nada me ligaram e disseram que o site estava fora do ar.

Entrei no server e reinicei o IIS, resultado: tudo voltou ao normal.

Não sei mais o que fazer estou desesperado, ninguem sabe o que é isso, não é possivel q ninguem nunca tenha tido um problema parecido.


Signori
   - 09 out 2009

Kra vc está utilizado DataReader para manipulação dos dados?

pelo que vi na imagem 3 que vc postou:
´while reader.read´

Como seu site tem muitos acessos por dia, eis o problema, DataReader lota a memória do servidor e não suporta vários acessos, podes verificar que quando o site trava, o processo w3wp.exe do servidor está utilizando grande quantidade de memória, é por causa do DataReader.

Falo isso porque já enfrentei esse problema.

para aplicações deste porte não é recomendável o uso de Reader.

Uma solução que pode te auxiliar a curto prazo, seria evitar o máximo o acesso ao BD, pois assim utilizará menos o componente, também dê um ´.dispose´ e ´.free´ no seu DataReader nas consultas.

Solução definitiva: Eliminar o DataReader do teu projeto, implementando uma classe de conexão (DataAcess) e já que trabalha com SQL Server, podes utilizar o componente padrão para conexão.

Se tiver dúvida pode me mandar email.


Abreufkb
   - 09 out 2009

Caro signori, acho que vc tem toda razão, eu uso muito DataReader na minha aplicação.

A conexão eu criei uma classe que a faz.ex.:

public static SqlConnection Instance
{
get
{
if (instance == null)
{
instance = new SqlConnection(ConfigurationManager.ConnectionStrings[´ConexaoUm´].ConnectionString);
}
return instance;
}
}

Depois eu a chamo de qualquer lugar da minha aplicação,(dbConnection.Instantece.Open()).

Me diga uma coisa, será que seria legal eu trocar os DataReaders por DataAdapter?


Signori
   - 09 out 2009

abreuFKB,

acho interessante fazer esta troca, não custa tentar.

Otra coisa que pode ajudar, se vc não o faz ainda, é vc fechar esta conexão após cada ida ao banco. ´connection.close´.

Vc usa StoredProcedures? Também melhoram muito o desempenho.

Qualquer dúvida estamos aí...