Действие вашего контроллера выглядит очень странно, можно сказать, классический код WebForms, а не ASP.NET MVC. Обычно действия контроллера возвращают ActionResult
:
public ActionResult ServeAudioFile()
{
Response.AppendHeader("Content-Disposition", "inline; filename=music.wav");
return File(audioFilename, "audio/wav");
}
Что касается встраивания встроенного проигрывателя в браузер, вы можете взглянуть на тег <object>
и указать URL этого действия контроллера (не используйте Html.RenderAction
). А вот другой пример использования тега object
.
Что касается предотвращения прямого доступа, это невозможно, музыкальный файл воспроизводится на клиенте, и если вы запретите доступ к нему, вы не сможете его воспроизвести. Это то же самое, что пытаться скрыть HTML вашего сайта. Это просто то, что не должно быть сделано. С другой стороны, вы можете разрешить только аутентифицированным пользователям получать доступ к этому действию контроллера, украсив его атрибутом [Authorize]
.