У меня есть веб-сайт, на котором есть несколько страниц категорий продуктов, которые служат для размещения изображений в «Шаблоне элементов» в «Списке данных». Изображение взято как показано:
<a href='<%#"/ProductPage.aspx?item="+Eval("Id")+"&cat="+Eval("Cat") %>'</a>
<asp:Image ID="Image1" class="imageViewer" runat="server"
ImageUrl='<%#"../Handlers/getImage.ashx?Id="+Eval("PhotoId") %>' />
</a>
Это, в свою очередь, вызывает обработчик getImage.ashx, который выглядит так:
public void ProcessRequest(HttpContext context)
{
Int32 my_Id;
if (context.Request.QueryString["Id"] != null)
{
my_Id = Convert.ToInt32(context.Request.QueryString["Id"]);
context.Response.ContentType = context.Request.QueryString["Type"];
Stream strm = ShowEmpImage(my_Id);
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);
}
}
}
public Stream ShowEmpImage(int my_Id)
{
string conn = ConfigurationManager.ConnectionStrings["dbconnection"].ConnectionString;
SqlConnection connection = new SqlConnection(conn);
try {
SqlCommand cmd = new SqlCommand("[dbo].[GetImageHandler]", connection);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Id", my_Id);
connection.Open();
object img = cmd.ExecuteScalar();
connection.Close();
return new MemoryStream((byte[])img);
} catch (Exception ex)
{
connection.Close();
return new MemoryStream();
}
}
Это всегда хорошо работало, когда я сохранял изображения в базе данных. Внезапно по состоянию на конец прошлой ночи изображения периодически дают 403 ошибки. Ссылка на мой сайт и соответствующую страницу: https://moneta.ggiww.com/ProductCategories?cat=Special%20Order
Я не менял никаких разрешений и не делал ничего другого для этого сайта. Он находится на плане Interserver Shared Hosting для сайтов asp.net. Все остальные сайты делают то же самое. Если вы перезагрузите страницу и щелкнете по ней, изображения изменятся на том, какие из них загружены или нет. Я в недоумении, почему это происходит внезапно. Я готов ко всем предложениям; Я даже пересоздаю обработчик, если у меня тоже. (хотя это всегда работало до того, как я сказал, все это внезапно начало происходить)
Забыл упомянуть, что эти сайты отлично работают в моей локальной среде при отладке.
В первом комментарии я попытался изменить абсолютный URL-адрес, но все еще возникают проблемы:
<asp:Image ID="Image1" class="imageViewer" runat="server"
ImageUrl='<%#"https://moneta.ggiww.com/Handlers/getImage.ashx?
Id="+Eval("PhotoId") %>' />