Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 412
  • Last Modified:

Problem with Image not refreshing

Hi all

I am using image verification (CAPTCHA) on my contact form and for some reason the image is not being updated when the page refreshes. The image tag...

<asp:Image ID="verimg" runat="server" Width="100" Height="40" />

..has its imageurl property set programmatically when the new image is generated and saved (see code below) and I was expecting the image to be refreshed whenever the following two lines were executed by the code..

Dim code As String = GenerateVCodeImage()
Session("VCode") = code

..but this isn't happening.

I have also included the following three lines of code in my page_load routine to stop cacheing, but that hasn't helped..

Response.Expires = 0
Response.Cache.SetNoStore()
Response.AppendHeader("Pragma", "no-cache")

Can anyone suggest why my image won't refresh, or provide a better solution for displaying my generated bitmap on the contact form.

Thanks in advance

Jerute
Private Function GenerateVCodeImage() As String
 
	Dim bmfile As String = Server.MapPath("~") & "\capimage.jpg"
	Dim txfile As String = Server.MapPath("~") & "\captext.txt"
	Dim oBitmap As Drawing.Bitmap = New Drawing.Bitmap(90, 35)
	Dim oGraphic As Drawing.Graphics = Drawing.Graphics.FromImage(oBitmap)
	Dim foreColor As System.Drawing.Color
	Dim backColor As System.Drawing.Color
 
	Dim sText As String = generateVCode(5)
	Dim sFont As String = "Comic Sans MS"
 
	foreColor = System.Drawing.Color.FromArgb(220, 220, 220)
	backColor = System.Drawing.Color.FromArgb(190, 190, 190)
 
	Dim oBrush As New Drawing.Drawing2D.HatchBrush(CType(generateHatchStyle(), Drawing.Drawing2D.HatchStyle), foreColor, backColor)
	Dim oBrushWrite As New Drawing.SolidBrush(Drawing.Color.Red)
 
	oGraphic.FillRectangle(oBrush, 0, 0, 100, 50)
	oGraphic.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
 
	Dim oFont As New Drawing.Font(sFont, 14)
	Dim oPoint As New Drawing.PointF(5.0F, 4.0F)
 
	oGraphic.DrawString(sText, oFont, oBrushWrite, oPoint)
 
	Response.ContentType = "image/jpeg"
	oBitmap.Save(bmfile, Drawing.Imaging.ImageFormat.Jpeg)
	oBitmap.Dispose()
 
	verimg.ImageUrl = "capimage.jpg"
	File.WriteAllText(txfile, sText)
	Return sText
 
End Function
 
 
Private Function generateVCode(ByVal CodeLength As Integer) As String
	Dim VCode As String = String.Empty
	Dim randObj As New Random()
	Dim c As Integer = 63
	For i As Byte = 1 To CodeLength
		c = randObj.Next(35)
		If c >= 10 Then
			c += 7
		End If
		c += 48
		VCode += Chr(c)
	Next
	Return VCode
End Function
 
Private Function generateHatchStyle() As HatchStyle
	Dim slist As New ArrayList
	For Each style As HatchStyle In System.Enum.GetValues(GetType(HatchStyle))
		slist.Add(style)
	Next
 
	Dim randObj As New Random()
	Dim index As Integer = randObj.Next(slist.Count - 1)
 
	Return CType(slist(index), HatchStyle)
End Function

Open in new window

0
jerute
Asked:
jerute
  • 3
  • 2
1 Solution
 
Genome_A_WCommented:
back when i used to make websites i used to get a problem with the images not updating. Id check everything and by all means they should have refreshed. I would give up and then the next day (or sometimes a few hours later) they would have changed. Something to do with the cache server side maybe?
0
 
ericwong27Commented:
Try to generate a unique ID string and append it to the image Like:

verimg.ImageUrl = "capimage.jpg?uid=" + System.Guid.NewGuid().ToString()

0
 
jeruteAuthor Commented:
Thanks for your reply Eric but I'll have to stand up to read this as it just went over my head. I've never dealt with unique IDs. Can you explain the how's and why's?

Thanks.
0
Get 10% Off Your First Squarespace Website

Ready to showcase your work, publish content or promote your business online? With Squarespace’s award-winning templates and 24/7 customer service, getting started is simple. Head to Squarespace.com and use offer code ‘EXPERTS’ to get 10% off your first purchase.

 
ericwong27Commented:
This will trick the browser into reloading the image from the server since the image name is difference. if your image name is not change, the browser probably get it from cache.
0
 
jeruteAuthor Commented:
You mistunderstand me Eric. How do I implement this GUID?

How do I assign one, and how do I use it? Can you give me an example as I have never come across the use of these before.

Thanks again.
0
 
jeruteAuthor Commented:
A-HA!! I get it. Yes, that seems to do the trick. Thank you EW.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Easily Design & Build Your Next Website

Squarespace’s all-in-one platform gives you everything you need to express yourself creatively online, whether it is with a domain, website, or online store. Get started with your free trial today, and when ready, take 10% off your first purchase with offer code 'EXPERTS'.

  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now