Здравствуйте
Есть одна непонятная проблема. На страницу выводим картинку, которая хранится в БД, поле типа image.
Суть проблемы:
Нетскейп выводит картинку, а Экплорер нет, не зависает, а ждет бесконечно долго чего-то от сервера.
Ставил брэкпойнты, все нормально — до Response.End() и con.Close() сервер проходит.
Причем при просмотре на той машине (то есть если набирать localhost/mysite/myapp), где работает IIS проблем нет, и Нетскейп и Экплорер работают. Проблема на зависит от версии Экплорер (и 5 и 6)
Есть подозрения, что Экплорер не "врубается", что вся картинка уже у него и надо бы показать ее. Как ему это обяснить?
Может кто сталкивался с такой проблемой, буду благодарен за совет
Так выглядит код с картинкой
Image1.ImageUrl="planirovka.aspx?reid=" + strReID;
а тут код planirovka.aspx
public class Planirovka : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
if( Request.QueryString["reid"] != null )
{
DisplayImage(Request.QueryString["reid"]);
}
}
private void DisplayImage(string strReId)
{
SqlConnection con = new SqlConnection(DBProvider.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "select planirovka from tblRealEstate where RealEstateID=" + strReId;
cmd.Connection = con;
try
{
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
Response.Clear();
Response.ContentType = "image/jpeg";
int bufferSize=1000;
byte[] outbyte = new byte[bufferSize];
long startIndex = 0;
long retval ;
BinaryWriter bw = new BinaryWriter(Response.OutputStream);
while (dr.Read())
{
retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
while (retval == bufferSize)
{
bw.Write(outbyte);
//bw.Flush();
startIndex+= bufferSize;
retval = dr.GetBytes(0, startIndex, outbyte, 0, bufferSize);
}
bw.Write(outbyte);
//bw.Flush();
bw.Close();
}
Response.End();
dr.Close();
}
catch (SqlException SqlEx)
{
Server.Transfer("Error.aspx");
}
finally
{
con.Close();
}
}
}