У меня есть действие контроллера MVC 5, которое извлекает аудиоданные и загружает их на клиент.Ранее это был некоторый код aspx.cs, у которого были свои проблемы, прежде чем я обновил его до следующего:
// Support byte range headers for Chrome: https://stackoverflow.com/a/32377121/1106497
long fSize = audio.Length;
long startbyte = 0;
long endbyte = fSize - 1;
int statusCode = 200;
if ((Request.Headers["Range"] != null)) {
// Get the actual byte range from the range header string, and set the starting byte.
string[] range = Request.Headers["Range"].Split(new char[] { '=', '-' });
startbyte = Convert.ToInt64(range[1]);
if (range.Length > 2 && range[2] != "") {
endbyte = Convert.ToInt64(range[2]);
}
//If the start byte is not equal to zero, that means the user is requesting partial content.
if (startbyte != 0 || endbyte != fSize - 1 || range.Length > 2 && range[2] != "") {
// Set the status code of the response to 206 (Partial Content) and add a content range header.
statusCode = 206;
}
}
long desSize = endbyte - startbyte + 1;
// Headers
Response.StatusCode = statusCode;
Response.ContentType = "audio/mp3";
if (AudioIsWAV(audio)) {
Response.ContentType = "audio/wav";
}
Response.AddHeader("Content-Accept", Response.ContentType);
Response.AddHeader("Content-Length", desSize.ToString());
Response.AddHeader("Content-Range", string.Format("bytes {0}-{1}/{2}", startbyte, endbyte, fSize));
// Send the Data
var stream = new MemoryStream(audio, (int)startbyte, (int)desSize);
return new FileStreamResult(stream, Response.ContentType);
Поскольку я обновил действие до этого, оно работало лучше во всех отношениях, за исключением того, что аудиоплеер Chrome можетбольше не искать.Когда вы пытаетесь настроить, где вы находитесь в файле, он всегда возвращается к началу.
Самая близкая проблема, которую я мог найти в своем исследовании, заключается в следующем: Я могу получить audio.currentTime, но не установить его (в Google Chrome) , где проблема была определена как поврежденный файл,Однако сами файлы работали до того, как я настроил способ их отправки.
Он отлично работает в других браузерах, и когда я помещаю другой источник в тот же проигрыватель, который выглядит нормально.Я считаю, что это должно быть что-то не так с файлом, который я отправляю отсюда.