Веб-сервер VS Builtin отправляет изображения в виде октет-потока - PullRequest
0 голосов
/ 25 февраля 2009

Я отлаживаю веб-сайт ASP.NET, на котором есть много javascript и изображений, используя веб-сервер разработки Visual Studio 2008.

Один из множества скриптов пытается создать тег <img> на лету и снабдить его соответствующим атрибутом src. Однако ни одно из изображений не загружается, и вместо этого альтернативный текст отображается в Firefox, IE и Opera.

Копая дальше, я скопировал одну из ссылок на изображения, а затем вставил их в адресную строку Firefox, и вот что появляется в окне заголовков в реальном времени:

GET /images/nav/zoomin.png HTTP/1.1
Host: localhost:7777
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Wed, 25 Feb 2009 16:59:23 GMT
X-AspNet-Version: 2.0.50727
Cache-Control: private
Content-Type: application/octet-stream
Content-Length: 292
Connection: Close

Проблемной частью является заголовок Content-Type, который каким-то образом установлен на «application / octet-stream», заставляя операцию загрузки вместо обычного отображения внутри тега <img>.

Я уверен, что проблема не в javascript, потому что это код, который был дословно скопирован из другого приложения, который работал просто отлично.

Полагаю, что-то где-то неправильно настроено. Но я могу ошибаться, поэтому вот код, который создает тег HTML:

var zin = document.createElement("img");
zin = $Img.Png(zin, Settings.ImageHost + "zoomin.png");
zin.style.top = (this.y + zoomPaddingY) + "px";
zin.style.left = (this.x + zoomPaddingX) + "px";
zin.style.position = "absolute";
$Img.Swap(zin, Settings.ImageHost + "zoomin.png", Settings.ImageHost + "zoomin_active.png");
zin.alt = zin.title = "zoom in";
zin.style.cursor = this.hand;
$Evt.addListener(zin, "click", this.zoomIn, this, true);

// long long scroll ...

controlDiv.appendChild(zin);

Часть $Img.Png работает нормально для других изображений PNG, поэтому она не должна быть источником проблемы.

Что я сделал не так?!?

Спасибо за любую помощь!

Уже полночь ... и я все еще работаю над этим небольшим приложением ...

1 Ответ

1 голос
/ 25 февраля 2009

Используете ли вы GenericHandler для визуализации изображения?

Казалось бы, легкий выбор для этого.

Например.

public class RenderImage : IHttpHandler, IReadOnlySessionState
{
  public void ProcessRequest(HttpContext context)
  {
     context.Response.ContentType = "image/png";
     context.Response.Clear();

    // TODO: Write image data
    Bitmap bitmap = ...

    bitmap.Save(Response.OutputStream,ImageFormat.Png);

    context.Response.End();
  }

  public bool IsReusable { get { return false; } }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...