C# 如何在web.config中注册ImageHandler

C# 如何在web.config中注册ImageHandler,c#,asp.net,web-config,handler,C#,Asp.net,Web Config,Handler,我编写了以下处理程序类,用于从数据库读取图像并在我的网页中显示它们: <%@ WebHandler Language="C#" Class="Handler" %> using System; using System.Configuration; using System.Data.SqlClient; using System.Web; public class Handler : IHttpHandler, System.Web.SessionState.IRequires

我编写了以下处理程序类,用于从数据库读取图像并在我的网页中显示它们:

<%@ 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映射中将*.jpg映射到ASPX文件处理程序,否则它将无法工作。此链接将帮助您:

答案来了!我的代码没有问题,主机上有防火墙,不允许显示我的图像!之后配置防火墙我的项目工作得很好:)

谢谢,我会尝试一下,但是你没有看到我的代码中有什么错误吗?你可以做一些优化,如果它在本地工作,它也应该在生产中工作。我的意思是,你没有看到任何错误吗?我是否应该将*.jpg映射到ashx?不,我认为这是正确的-我检查了iis管理器,我应该这样做:在处理程序映射中,我单击“添加托管处理程序”,然后弹出一个对话框!name属性应该与web配置中标记的name属性相同,类型为:Hanlder,请求路径为:*。jpg足够了吗?或者我也应该设置请求限制?
<add name="ImageHandler" verb="*" path="*.jpg" type="Handler" />