をスロー(例。/オーディオ/ 234)。バックエンドは.NET Core 2.0で実装されています。私は、オーディオの再生開始時に、すぐにファイルの末尾に求めていない場合.NET Core| MVC pass audio file to html5 player. Enable seekingHTML5オーディオシークが正しく機能していません。私は私のAPIエンドポイントにHTML5のaudio要素とSRCを設定されている角度のアプリケーションにオーディオファイルをストリーミングしようとしているレスポンスのContent-Length不一致例外
が作品を探す:私はすでにストリーミングのこの種を実装しました。私はオーディオ要素のautoplay属性を使用して、すぐに再生を開始します。オーディオ要素には十分なデータがあります。だから私の状況では、私はそれが私のAPIに新しいGETを作るので、オーディオ要素はまだ私が求める時にすべてのデータがありません。
は失敗:私のバックエンドログにそのような状況では、この例外があるMicrosoft.AspNetCore.Server.Kestrel [13] [1]接続ID "0HL9V370HAF39"、リクエストID "0HL9V370HAF39:00000001":未処理アプリケーションによって例外がスローされました。 [1] System.InvalidOperationException:レスポンスContent-Length mismatch:書き込まれたバイト数が少なすぎます(6126919の0)。
は、ここに私のオーディオコントローラのGETメソッドです。
byte[] audioArray = new byte[0];
//Here I load audio file from cloud
long fSize = audioArray.Length;
long startbyte = 0;
long endbyte = fSize - 1;
int statusCode = 200;
var rangeRequest = Request.Headers["Range"].ToString();
_logger.LogWarning(rangeRequest);
if (rangeRequest != "")
{
string[] range = Request.Headers["Range"].ToString().Split(new char[] { '=', '-' });
startbyte = Convert.ToInt64(range[1]);
if (range.Length > 2 && range[2] != "") endbyte = Convert.ToInt64(range[2]);
if (startbyte != 0 || endbyte != fSize - 1 || range.Length > 2 && range[2] == "")
{ statusCode = 206; }
}
_logger.LogWarning(startbyte.ToString());
long desSize = endbyte - startbyte + 1;
_logger.LogWarning(desSize.ToString());
_logger.LogWarning(fSize.ToString());
Response.StatusCode = statusCode;
Response.ContentType = "audio/mp3";
Response.Headers.Add("Content-Accept", Response.ContentType);
Response.Headers.Add("Content-Length", desSize.ToString());
Response.Headers.Add("Content-Range", string.Format("bytes {0}-{1}/{2}", startbyte, endbyte, fSize));
Response.Headers.Add("Accept-Ranges", "bytes");
Response.Headers.Remove("Cache-Control");
var stream = new MemoryStream(audioArray, (int)startbyte, (int)desSize);
return new FileStreamResult(stream, Response.ContentType)
{
FileDownloadName = track.Name
};
一部のヘッダーがありませんか?
私は、.NETのコア1.1でこの例外を取得していないが、私はそれがちょうど一致および/または悪いテストではよく分かりません。しかし、誰かが情報を持っていれば、ストリーミングに関連した.NET Coreで何か変わってしまいました。私はその情報を感謝します。