2

私は Windows 2008 で IIS7 の Web サイトを持っています。java-script から http-handler で mp3-file を書きます:

var audio = document.getElementById("audio");
audio.src = GetMultimedia.ashx?F=" + filename;
audio.load();
audio.play();

GetMultimedia.ashx:

 Response.ClearHeaders();
 Response.ClearContent();
 Response.Clear();
 Response.ContentType = "audio/mp3";
 Response.AddHeader("content-length", FileLength().ToString());
 Response.AddHeader("Connection", "keep-alive");
 Response.BufferOutput = true;

   GetFile(ref FileBuffer);  // I get buffer of mp3-file for writing to Response
   if (FileBuffer != null)
   {
     ms = new MemoryStream(FileBuffer, 0, FileBuffer.Length, true);
     if (Response.IsClientConnected == true)
     {
       ms.CopyTo(Response.OutputStream);
       Response.Flush();
      }
   }

問題: Windows ではどのブラウザでも正常に動作しますが、Android (Opera、内部ブラウ​​ザ) では http-handler が 12 回動作します (以下のログ)。このハンドラーが 11 回呼び出された後、IIS は retcode 200 0 64 を書き込みます。そのため、http-handler が複数回呼び出されるため、Response の mp3-file は元のものとは異なります。

2012-11-11 15:54:13 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 64 1069317 261 8626
2012-11-11 15:54:13 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 2236677 261 8330
2012-11-11 15:56:15 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 140
2012-11-11 15:56:18 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 140
2012-11-11 15:56:22 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 296
2012-11-11 15:56:25 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 124
2012-11-11 15:56:29 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 249
2012-11-11 15:56:32 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 171
2012-11-11 15:56:35 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 140
2012-11-11 15:56:38 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 140
2012-11-11 15:56:41 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 140
2012-11-11 15:56:44 GET /GetMultimedia.ashx V=f.mp3 HTTP/1.1 stagefright/1.2+(Linux;Android+4.0.3) 200 0 0 255 284 109
4

0 に答える 0