如何在 web.config 中注册 ImageHandler

本文关键字:注册 ImageHandler config web | 更新日期: 2024-10-25 15:05:21

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

<%@ 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文件中,但它仍然无法正常工作:(

任何人都可以帮我找到正确的注册吗?

如何在 web.config 中注册 ImageHandler

您需要

将 *.jpg 映射到 IIS 映射中的 ASPX 文件处理程序,否则它将不起作用。此链接将帮助您: 如何:在 IIS 中配置 HTTP 处理程序扩展

答案来了! 我的代码没有任何问题,并且主机上有防火墙,不允许显示我的图像! 配置防火墙后,我的项目工作正常:)