Inquiridor
DataReader.GetByte Falha no Asp.net

Pergunta
-
Estou desenvolvendo uma aplicação em asp.net que acessa uma base AS400, tenho um campo com valores acentuados. Com windows forms eu acesso ODBC e DataReader e consigo converter usando encoding e DataReader.GetBytes(). Porém essa mesma base, mesmo campo quando acesso via asp.net o DataReader.Getbytes gerar uma exceção. A única diferente está entre Windows Forms e Asp.net
Todas as Respostas
-
certifique se que o objeto de conexão esta aberto pois o datareader só funciona nessa condição caso não resolva coloca a exceção que é lançada pelo sistema e o trecho do codigo aonde ocorre a exceção.
caso a resposta seje util não deixe de marca-la.
-
....a conexao está aberta, e estou lendo outros 40 campos....
while (dr.Read())
{
f5676Row.TELOTE = ConverterString(dr, 15);
}....
public string ConverterString(System.Data.Odbc.OdbcDataReader dr, int columnIndex)
{
try
{
long bytesize = dr.GetBytes(columnIndex, 0, null, 0, 0); <------neste gera a exceção não é uma sequencia de bytes válida.....byte[] dados = new byte[bytesize];
long bytesread = 0;
int chunkSize = 1000;
int curpos = 0;
System.Text.Encoding enc = System.Text.Encoding.GetEncoding(37);
while (bytesread < bytesize)
{
bytesread += dr.GetBytes(columnIndex, curpos, dados, curpos, chunkSize);
curpos += chunkSize;
}
return enc.GetString(dados);
}
catch
{
return dr.GetString(columnIndex);
}
}MAS O MAIS INTERESSANTE EM WINDOWS FORMS FUNCIONA, ERRO QUANDO USA DDL EM ASP.NET.
-
certifique se que o objeto de conexão esta aberto pois o datareader só funciona nessa condição caso não resolva coloca a exceção que é lançada pelo sistema e o trecho do codigo aonde ocorre a exceção.
caso a resposta seje util não deixe de marca-la.
0....a conexao está aberta, e estou lendo outros 40 campos....
while (dr.Read())
{
f5676Row.TELOTE = ConverterString(dr, 15);
}....
public string ConverterString(System.Data.Odbc.OdbcDataReader dr, int columnIndex)
{
try
{
long bytesize = dr.GetBytes(columnIndex, 0, null, 0, 0); <------neste gera a exceção não é uma sequencia de bytes válida.....byte[] dados = new byte[bytesize];
long bytesread = 0;
int chunkSize = 1000;
int curpos = 0;
System.Text.Encoding enc = System.Text.Encoding.GetEncoding(37);
while (bytesread < bytesize)
{
bytesread += dr.GetBytes(columnIndex, curpos, dados, curpos, chunkSize);
curpos += chunkSize;
}
return enc.GetString(dados);
}
catch
{
return dr.GetString(columnIndex);
}
}MAS O MAIS INTERESSANTE EM WINDOWS FORMS FUNCIONA, ERRO QUANDO USA DDL EM ASP.NET.
-