2012-08-06 70 views
0

註冊ImageHandler我寫它是用來從數據庫中讀取圖像,並顯示在我的網頁下面的處理程序類:如何在web.config中

<%@ WebHandler Language="C#" Class="Handler" %> 

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

public class Handler : IHttpHandler, System.Web.SessionState.IRequiresSessionState 
{ 

    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["IranQRDBConnectionString"].ConnectionString); 
    public void ProcessRequest(HttpContext context) 
    { 
     try 
     { 
      string TableName = context.Session["TableToQuery"].ToString(); 
      string ID = context.Session["ID"].ToString(); 

      SqlCommand comm = new SqlCommand("SELECT * FROM " + TableName + " WHERE ID=" + ID, conn); 

      conn.Open(); 
      SqlDataReader dr = comm.ExecuteReader(); 
      dr.Read(); 
      context.Response.ContentType = "image/jpeg"; 
      context.Response.BinaryWrite((byte[])dr["Image"]); 
      conn.Close(); 

     } 
     catch 
     { 
      SqlCommand comm = new SqlCommand("SELECT * FROM DefaultImage WHERE ID=1", conn); 

      conn.Open(); 
      SqlDataReader dr = comm.ExecuteReader(); 
      dr.Read(); 
      context.Response.ContentType = "image/jpeg"; 
      context.Response.BinaryWrite((byte[])dr["Image"]); 
      conn.Close(); 
     } 
    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 

} 

該類工作正常在我的地方!我已經上傳了我的網站,當我查詢我的數據庫時,所有數據都會返回到我的網頁,除非圖像未顯示在圖像控件中。我搜索了網頁,發現我應該在web.config文件中註冊我的處理程序,並且主機上的IIS版本是7,並且它正在集成模式下運行!所以我知道我應該在web.config<System.webserver><Handlers>部分註冊該處理程序。

有關更多詳細信息,我將處理程序類添加到我的項目根目錄中,而不是在App_Code目錄中!我已經上傳網站作爲預編譯的網站,我在我的根目錄下有預編譯的Handler.ashx,我的App_Code中有App_Web_handler.ashx.cdcab7d2.dll文件。

我還補充說:?

<add name="ImageHandler" verb="*" path="*.jpg" type="Handler" /> 

在我web.config文件,但它仍然無法正常工作:(

可以在任何一個幫助,請我找到正確的註冊

回答

0

這就是答案!我的代碼沒有任何問題,並且主機上有一個防火牆,它們不允許我的圖像被顯示出來!配置防火牆後,我的項目工作得很好:)

2

您需要map * .jpg到IIS映射中的ASPX文件處理程序,否則它將不起作用。此鏈接將幫助您:How to: Configure an HTTP Handler Extension in IIS

+0

謝謝,我會試試,但是你沒有看到我的代碼有什麼問題嗎? – Karamafrooz 2012-08-06 11:44:37

+0

你可以做一些優化,如果它在本地工作,它也應該在生產中工作。 – Anuraj 2012-08-06 11:47:21

+0

我的意思是在你沒有看到任何錯誤嗎?並且不應該將* .jpg映射到ashx? – Karamafrooz 2012-08-06 11:49:14