2013-01-24 107 views
0

我想傳遞一些參數到通用處理程序和獲取和響應圖像。ASP.net通用處理程序

我用我的網頁上的圖片驗證碼:

<a href="#"><img id="slide-3" src="~/Image_Handler.ashx?SL=/SL1&US=Kim&ID=1 alt="Tulips" title="Tulips" /></a> 

當我的頁面加載圖像不會加載。然而,我在我的網頁上放了一個按鈕,並給了PostBackUrl相同的URL,它打開了一個新窗口,並顯示圖片完全正常。

這是我的Image_handler代碼(通用處理器)

using System; 
using System.Collections.Generic; 
using System.Configuration; 
using System.Data; 
using System.Data.SqlClient; 
using System.Web; 

namespace WEB_2._0_Programing.Private 
{ 
/// <summary> 
/// Summary description for Image_Handler 
/// </summary> 
public class Image_Handler : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 

     String id; 
     String Slideshow = context.Request.QueryString["SL"]; 
     String Username = context.Request.QueryString["US"]; 
     id = context.Request.QueryString["ID"]; 

     if (Slideshow != null) 
     { 
      SqlConnection connection = new SqlConnection("Data Source=KAMY-WIN7\\SQLEXPRESS;Initial Catalog=MainDataBase;Integrated Security=True;Pooling=False"); 

      String query = "SELECT identity(int,1,1) ID,Image into #temp FROM UserImage where (Username = @username) AND (Slideshow = @slideshow) SELECT * FROM #temp WHERE ([email protected])"; 
      SqlCommand command = new SqlCommand(query, connection); 
      command.Parameters.AddWithValue("@username", Username); 
      command.Parameters.AddWithValue("@slideshow", Slideshow); 
      command.Parameters.Add("@id", SqlDbType.Int).Value = int.Parse(id); 
      //command.Parameters.Add("@id", SqlDbType.Int).Value = id; 
      connection.Open(); 
      SqlDataReader dReader = command.ExecuteReader(); 
      dReader.Read(); 
      context.Response.ContentType = "image/jpeg"; 
      Byte[] Image = (Byte[])dReader["Image"]; 
      context.Response.BinaryWrite(Image); 
      dReader.Close(); 
      connection.Close(); 
     } 
     context.Response.Write("NOT OK!!!"); 

    }  

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

}

上這一部分的錯誤是在頁面加載context.Request.QueryString [];不會返回任何值,但是當我使用一個按鈕,並給出相同的src它工作正常.. 請幫助我不知道是什麼問題。

+0

您不必在src屬性的值的末尾關閉報價。 – yoozer8

回答

1

兩件事情:

  1. 你的src屬性沒有關閉"
  2. 您需要url encode特殊字符,如在你的查詢字符串/

例如爲:

<img src='~/Image_Handler.ashx?SL=<%= HttpUtility.UrlEncode("/SL1") %>&US=Kim&ID=1' />