C#Httpresponse提供了无法将数据写入传输连接:管道中断

问题描述

我已经在控制台应用程序上完成了这小段代码,可以通过 HTTP 通过文件或通过模拟数据流 按块

            var musicFile = "music.mp3";
            var imageFile = "image.mp3";

            var prefixes = new List<string>() { "http://*:8888/" };
            HttpListener server = new HttpListener();

            foreach (string s in prefixes)
            {
                server.Prefixes.Add(s);
            }

            server.Start();

            System.Console.WriteLine("Listening...");

            var context = server.GetContext();

            var response = server.GetContext().Response;

            //response.ContentType = "image/jpeg";
            response.ContentType = "audio/mpeg";
            response.SendChunked = true;

            const int chunkSize = 1024;
            using (var file = File.OpenRead(path))
            {
                int bytesRead;
                var buffer = new byte[chunkSize];
                while ((bytesRead = file.Read(buffer,buffer.Length)) > 0)
                {
                    try
                    {
                        response.OutputStream.Write(buffer,bytesRead);
                        response.OutputStream.Flush();
                        
                        System.Console.WriteLine("Chunk sent.");
                    }
                    catch (System.Exception ex)
                    {
                        System.Console.WriteLine($"{ex.Message}");
                    }
                }
            }

            context.Response.Close();

大家好 当我发送 10mb图像)时,此方法效果很好,但是当我使用mp3文件或wav文件时,它将引发异常。

未处理的异常。 System.Net.HttpListenerException(0x80131620):无法将数据写入传输连接:管道断开。 在System.Net.HttpResponseStream.InternalWrite(Byte []缓冲区,Int32偏移量,Int32计数) 在System.Net.HttpResponseStream.WriteCore(Byte []缓冲区,Int32偏移量,Int32大小) 在System.Net.HttpResponseStream.Write(Byte []缓冲区,Int32偏移量,Int32大小)

有什么帮助吗? 谢谢。

编辑:我在同一台计算机和lan上使用Chrome和Safari进行了测试。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)