nic*_*wdy 5 c# asp.net iis ashx
我正在使用ashx请求处理程序来检索图像,并且ashx文件中的断点未被命中.当我使用firebug时,我可以看到请求返回404,这使我认为我需要配置一些设置,以便可以找到ashx文件.
我正在使用visual studio 2008和.net 3.5.
ASHX文件
namespace hybrid.content.Handlers
{
public class DB_Images : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Int32 image_id;
if (context.Request.QueryString["id"] != null)
image_id = Convert.ToInt32(context.Request.QueryString["id"]);
else
throw new ArgumentException("No parameter specified");
context.Response.ContentType = "image/jpeg";
Stream strm = GetImageFromDatabase(image_id);
if (strm != null)
{
byte[] buffer = new byte[4096];
int byteSeq = strm.Read(buffer, 0, 4096);
while (byteSeq > 0)
{
context.Response.OutputStream.Write(buffer, 0, byteSeq);
byteSeq = strm.Read(buffer, 0, 4096);
}
//context.Response.BinaryWrite(buffer);
}
}
public Stream GetImageFromDatabase(int image_id)
{
SqlConnectionStringBuilder connstr = new SqlConnectionStringBuilder();
//connstr.InitialCatalog = "dummy";
//connstr.UserID = "sa";
//connstr.Password = "password";
//connstr.DataSource = "source";
connstr.InitialCatalog = "smsdb";
connstr.UserID = "user";
connstr.Password = "password";
connstr.DataSource = "10.31.4.79";
SqlConnection conn = new SqlConnection(connstr.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
// cmd.CommandText = "select image from cis_images where image_id = @p_image_id";
cmd.CommandText = "select image from test_images where image_id = @p_image_id";
cmd.Parameters.AddWithValue("@p_image_id", image_id);
conn.Open();
object img = cmd.ExecuteScalar();
try
{
return new MemoryStream((byte[])img);
}
catch
{
return null;
}
finally
{
conn.Close();
conn.Dispose();
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
页面点击事件
protected void Button1_Click(object sender, EventArgs e)
{
Image1.ImageUrl = "~/DB_Images.ashx?id=" + TextBox1.Text;
}
Run Code Online (Sandbox Code Playgroud)
ashx html
<%@ WebHandler Language="C#" CodeBehind="DB_Images.ashx.cs" Class="hybrid.content.Handlers.DB_Images" %>
Run Code Online (Sandbox Code Playgroud)
除了该引用之外没有任何HTML.
有什么东西让我失去工作吗?
如果您在 ASP.NET 中使用通用处理程序,则需要检查一些事项。
1.) 如果确实是 32 位,请确保已将应用程序池中的“32 位应用程序”标志设置为 32 位。默认值为“假”。
2.) 将应用程序池从集成转为经典
3.) 适当更改应用程序池中的.NET 版本。在您的情况下,请使用 v2,因为 3.5 使用版本 2。.NET 4.0 使用 .NET 4.0。
4.) 确保 ASP.NET 已注册。运行代码块中的所有内容。
C:\> cd C:\Windows\Microsoft.NET\Framework64\{version}
C:\Windows\Microsoft.NET\Framework64{版本}>aspnet_regiis.exe -i
5.) 在 IIS 管理器中右键单击服务器名称(不是站点名称)后选择“ISAPI 和 CGI 限制”,然后右键单击正确的“ASP.NET {版本}”行并选择“允许”。
6.) 确保您的处理程序映射(对于 *.ashx)在服务器级别、站点级别或在 web.config 中显式打开(也称为“启用”)。
| 归档时间: |
|
| 查看次数: |
9341 次 |
| 最近记录: |