我编写了以下处理程序类,用于从数据库中读取图像并在我的网页中显示它们:
<%@ 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 并且它以集成模式运行!所以我知道我应该<System.webserver><Handlers>
在web.config
.
有关更多详细信息,我将处理程序类添加到我的项目根目录而不是App_Code
目录中!我已经将该网站作为预编译网站上传,并且Handler.ashx
在我的根目录中进行了预编译,并且App_Web_handler.ashx.cdcab7d2.dll
在我的App_Code
.
我还添加了:
<add name="ImageHandler" verb="*" path="*.jpg" type="Handler" />
在我的web.config
文件中,但它仍然不起作用:(
任何人都可以帮助我找到正确的注册吗?