В течение долгого времени я заметил что-то раздражающее при работе над проектами веб-приложений, связанными с изображениями на базе данных на моей локальной машине. По локальному я имею в виду, что это типичная среда с VS 2008 и SQL Server 2005 на моей рабочей станции. Всякий раз, когда я использую HttpHandler для отображения изображений на моем локальном уровне, только некоторые изображения отображаются на каждой загрузке страницы.
Однако, когда я нажимаю приложение в размещенную среду, проблема обычно исчезает. Однако я просто вытолкнул новый проект в размещенную среду и испытал ту же проблему, что и на моем локальном уровне - на этот раз сайт и БД находились на одном сервере в среде хостинга. Кто-нибудь взял на себя то, что здесь происходит?
Здесь обработчик:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class FeaturedHandler : IHttpHandler
{
Business biz = new Business();
public void ProcessRequest(HttpContext context)
{
if (context.Request.QueryString["ListingID"] != null)
{
int listingID = Convert.ToInt32(context.Request.QueryString["ListingID"]);
DataSet ds = biz.GetFeaturedImageByID(listingID);
DataRow row = ds.Tables[0].Rows[0];
byte[] featureImage = (byte[])row["Photo"];
context.Response.ContentType = "image/jpeg";
context.Response.OutputStream.Write(featureImage, 0, featureImage.Length);
}
else
throw new ArgumentException("No ListingID parameter specified");
}
public bool IsReusable
{
get
{
return false;
}
}
}
Я попытался использовать БД на отдельном сервере, но столкнулся с той же проблемой. Должен ли я использовать DataReader вместо этого?
UPDATE Я должен был использовать DataReader изначально, так как я читаю двоичные данные.