Używam obsługi żądania ashx do pobierania obrazów i mój punkt przerwania w pliku ashx nie jest trafiony. Kiedy używam firebuga, widzę, że żądanie zwraca 404, co powoduje, że muszę skonfigurować niektóre ustawienia, aby można było znaleźć plik ashx.asp.net żądanie ashx 404
Używam visual studio 2008 i .net 3.5.
plik 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;
}
}
}
}
Page zdarzenia kliknięcia
protected void Button1_Click(object sender, EventArgs e)
{
Image1.ImageUrl = "~/DB_Images.ashx?id=" + TextBox1.Text;
}
ashx html
<%@ WebHandler Language="C#" CodeBehind="DB_Images.ashx.cs" Class="hybrid.content.Handlers.DB_Images" %>
Nie ma żadnych html oprócz tego odniesienia.
Czy jest coś, czego mi brakuje, aby to zadziałało?
Czy możesz wkleić to, co masz w widoku "html" obsługi? (zawartość pliku ashx) –
Czy program IIS służy do obsługi programów obsługi? –
@Savage IIS jest skonfigurowany do obsługi programów obsługi. –