Route og ashx filer (vb.net 2010 )
Jeg har et problem; jeg har lavet en imageshandler (ashx fil) som virker fint.Nu vil jeg gerne have søgemaskine venlige url til billederne:
www.site.dk/imagehandler.ashx?number=2255
bliver til:
www.site.dk/images/2255
Mit problemet er at Route i Global.asax ikke kan håntere ashx filer.
Jeg har søgt rigtig meget på nettet og har fundet flere eksempler som virker, men de er alle skrivet i c# og jeg arbejder i vb (vs 2010)
Men når jeg oversætter koderne til VB (jeg bruger Instant_VB) så er kodene fyldt med fejl.
Jeg håber at der er en anden der har haft samme problem... som kan vise et kodeeksempel i VB
Nedestående er en af de koder som jeg kan få til at virke under C#: (ashx filen der dog lavet om til en cs fil, er også ok)
****************************************** NumberRouteHandler.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Routing;
namespace Web
{
public class NumberRouteHandler : IRouteHandler
{
public IHttpHandler GetHttpHandler(RequestContext requestContext)
{
return new NumberToImageHandler();
}
}
}
****************************************** NumberToImageHandler.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
namespace Web
{
public class NumberToImageHandler : ImageHandler
{
public NumberToImageHandler()
{
base.ContentType = ImageFormat.Png;
base.EnableClientCache = false;
}
public override ImageInfo GenerateImage(System.Collections.Specialized.NameValueCollection parameters)
{
string numberText = HttpContext.Current.Request.RequestContext.RouteData.Values["number"] as string;
if (string.IsNullOrEmpty(numberText))
numberText = "1";
MemoryStream ms = new MemoryStream(File.ReadAllBytes("C:\\z2.jpg"));
var img = Image.FromStream(ms);
return new ImageInfo(img);
}
}
}
****************************************** Global.asax
Protected Sub Application_Start()
RouteTable.Routes.Add(New Route("images/{*number}", New NumberRouteHandler()))
End Sub