Gå til innhold

ASP: [Løst]Webhandler fyrer ikke når jeg bruker Session


Anbefalte innlegg

Jeg laster et bilde inn i minne, lagrer det i tempmappa og vil vise det dynamisk på siden.

 

Jeg har dette i aspx:

 

<img src="PreviewImageQualityHandler.ashx" alt="Picture not loaded" runat="server" id="imagePreview" />

 

Koden for å laste opp bildet og legge unik id i Session:

 

protected void uploadButton_Click(object sender, EventArgs e)
{
try
{
	if (FileUploadControl.FileName.EndsWith(".jpg") || FileUploadControl.FileName.EndsWith(".jpeg"))
	{
		string tempFileName = Path.GetTempFileName();
		FileUploadControl.SaveAs(tempFileName);
		Session["tempName"] = tempFileName;
		Response.Write(Session["tempName"]);
		fileName = FileUploadControl.FileName;
	}
	else
	{
		Response.Write("<script>alert('Please select an image to upload')</script>");
	}
}
}

 

 

Webhandler koden:

 

public class PreviewImageQualityHandler : IHttpHandler, IRequiresSessionState
{   
public void ProcessRequest(HttpContext context)
{
	try
	{
		if (context.Session.Count > 0)
		{
			string sessID = context.Session["tempName"].ToString();
			Bitmap bmp = (Bitmap)System.Drawing.Image.FromFile(sessID);
			context.Response.ContentType = "image/jpg";
			MemoryStream ms = new MemoryStream();
			bmp.Save(ms, ImageFormat.Bmp);
			byte[] b = ms.ToArray();
			context.Response.OutputStream.Write(b, 0, b.Length);
		}
	}
	catch(Exception ex) 
	{ 

	}
}

public bool IsReusable
{
	get
	{
		return false;
	}
}

}

 

 

Webhandleren gjør det den skal når den kjøres, problemet er bare at den kun kjøres første gang jeg laster opp et bilde, eller ved å refreshe siden.

 

Fjerner jeg alt som har med Session å gjøre, kjøres webhandleren ved hver postback, akkurat som jeg ønsker.

 

Er det noen som vet hvorfor handleren ikke kjører på postback når jeg bruker Session?

 

Setter stor pris på alt av innspill!

 

Mvh

 

Francis :)

Lenke til kommentar
Videoannonse
Annonse

Jeg har løst problemet.

 

Grunnen til at webhandleren ikke fyrer er fordi browseren cacher bildet. Siden URLen til bildet er lik hele tiden, skjønner ikke browseren at det er et nytt bilde som ligger klart til visning.

 

Jeg løste det det slik:

 

imagePreview.Src = "PreviewImageQualityHandler.ashx" + "?x=" + DateTime.Now;

 

På denne måten blir bildet oppdatert når jeg trykker på knappen for å laste det opp.

 

http://stackoverflow.com/questions/2042017...ing-on-postback

 

Mvh

 

Francis

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...