Html5 音频 - 刷新页面无法重置音频

Html5 Audio - Refresh Page not work to reset audio

嗨,我需要你的帮助 - ASP.NET MVC。

在我的网络应用程序中,我有一个 html5 音频。​​

它运行一次,但是当你刷新页面时,这个视频在浏览器的内存中。

当我刷新页面时,它应该会触发新的控制器操作,就像第一次一样。

请看下面我的代码:

我的看法

        <audio controls style="width: 400px;">
            <source src="@Url.Action("StreamUploadedSong")" type="audio/mp3" />
            Your browser does not support the audio element.
        </audio>

我的控制器

        public FileStreamResult StreamUploadedSong()  // <--------- Do not enter here the second time.
        {
            byte[] teste = null;
            string query1 = "SELECT * FROM  Video WHERE Id= '2'";
            using (SqlConnection connection1 = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
            using (SqlCommand command1 = new SqlCommand(query1, connection1))
            {
                connection1.Open();
                var reader = command1.ExecuteReader();

                if (reader.HasRows)
                {
                    reader.Read();
                    teste = (byte[])reader["Voice"];
                }
                connection1.Close();
            }

            long fSize = teste.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] == "")
                { statusCode = 206; }//Set the status code of the response to 206 (Partial Content) and add a content range header.                                    
            }
            long desSize = endbyte - startbyte + 1;
            //Headers
            Response.StatusCode = statusCode;

            Response.ContentType = "audio/mp3";
            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));
            //Data

            var stream = new MemoryStream(teste, (int)startbyte, (int)desSize);

            return new FileStreamResult(stream, Response.ContentType);
        }

知道如何刷新页面以再次进入控制器操作 StreamUploadedSong 吗?

我找到了解决方案!

使用 Guid.NewGuid 初始化 Guid 结构的新实例。

Bruce 在本论坛发表了评论 The Asp.net MVC:

"The browser caches the audio. If you want it to fetch every time, the URL should be unique. Just add a guid to the URL."

来源:ASP.NET Forums

替换:

<source src="@Url.Action("StreamUploadedSong")" type="audio/mp3" />

<source src="@Url.Action("StreamUploadedSong", "Account", new {id = Guid.NewGuid()})" type="audio/mp3" />