4 Stimmen

Streaming von datenbankgestützten Bildern mit HttpHandler

Seit langem ist mir bei der Arbeit an Webanwendungsprojekten mit datenbankbasierten Images auf meinem lokalen Rechner etwas Unangenehmes aufgefallen. Mit lokal meine ich, dass es eine typische Umgebung mit VS 2008 und SQL Server 2005 auf meiner Workstation ist. Immer wenn ich einen HttpHandler verwende, um die Bilder auf meinem lokalen Rechner anzuzeigen, werden nur einige der Bilder bei jedem Laden der Seite gerendert.

Wenn ich die Anwendung jedoch in eine gehostete Umgebung verschiebe, verschwindet das Problem normalerweise. Ich habe jedoch gerade ein neues Projekt in eine gehostete Umgebung verlagert und das gleiche Problem wie in meiner lokalen Umgebung festgestellt - dieses Mal befanden sich die Website und die DB auf demselben Server in der Hosting-Umgebung. Hat jemand eine Idee, was hier los ist?

Hier ist der Handler:

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class FeaturedHandler : IHttpHandler
{
    Business biz = new Business();

    public void ProcessRequest(HttpContext context)
    {
        if (context.Request.QueryString["ListingID"] != null)
        {
            int listingID = Convert.ToInt32(context.Request.QueryString["ListingID"]);

            DataSet ds = biz.GetFeaturedImageByID(listingID);
            DataRow row = ds.Tables[0].Rows[0];
            byte[] featureImage = (byte[])row["Photo"];
            context.Response.ContentType = "image/jpeg";
            context.Response.OutputStream.Write(featureImage, 0, featureImage.Length);
        }
        else
            throw new ArgumentException("No ListingID parameter specified");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
} 

Ich habe versucht, eine DB auf einem separaten Server zu verwenden, bin aber auf das gleiche Problem gestoßen. Sollte ich stattdessen einen DataReader verwenden?

UPDATE Ich hätte ursprünglich einen DataReader verwenden sollen, da ich binäre Daten lese.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X