Изображения внезапно на сайте дают 403 ошибки и не будут загружены - PullRequest
0 голосов
/ 30 июня 2019

У меня есть веб-сайт, на котором есть несколько страниц категорий продуктов, которые служат для размещения изображений в «Шаблоне элементов» в «Списке данных». Изображение взято как показано:

<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") %>' />
...