Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Httpresponse无法将数据写入传输连接:管道断裂_C#_Http_Stream_Chunks_Broken Pipe - Fatal编程技术网

C#Httpresponse无法将数据写入传输连接:管道断裂

C#Httpresponse无法将数据写入传输连接:管道断裂,c#,http,stream,chunks,broken-pipe,C#,Http,Stream,Chunks,Broken Pipe,我在一个控制台应用程序上完成了这段代码,以流式传输文件或通过HTTP按块模拟数据流 var musicFile = "music.mp3"; var imageFile = "image.mp3"; var prefixes = new List<string>() { "http://*:8888/" }; HttpListe

我在一个控制台应用程序上完成了这段代码,以流式传输文件或通过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, 0, buffer.Length)) > 0)
                {
                    try
                    {
                        response.OutputStream.Write(buffer, 0, bytesRead);
                        response.OutputStream.Flush();
                        
                        System.Console.WriteLine("Chunk sent.");
                    }
                    catch (System.Exception ex)
                    {
                        System.Console.WriteLine($"{ex.Message}");
                    }
                }
            }

            context.Response.Close();
var musicFile=“music.mp3”;
var imageFile=“image.mp3”;
var prefixes=new List(){“http://*:8888/”};
HttpListener服务器=新建HttpListener();
foreach(前缀中的字符串s)
{
server.Prefixes.Add(s);
}
server.Start();
System.Console.WriteLine(“侦听…”);
var context=server.GetContext();
var response=server.GetContext().response;
//response.ContentType=“image/jpeg”;
response.ContentType=“音频/mpeg”;
response.SendChunked=true;
常量int chunkSize=1024;
使用(var file=file.OpenRead(path))
{
int字节读取;
var buffer=新字节[chunkSize];
而((bytesRead=file.Read(buffer,0,buffer.Length))>0)
{
尝试
{
response.OutputStream.Write(缓冲区,0,字节读取);
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(0x8013620):无法将数据写入传输连接:管道断开。 在System.Net.HttpResponseStream.InternalWrite(字节[]缓冲区,Int32偏移量,Int32计数) 位于System.Net.HttpResponseStream.WriteCore(字节[]缓冲区,Int32偏移量,Int32大小) 在System.Net.HttpResponseStream.Write(字节[]缓冲区,Int32偏移量,Int32大小)

有什么帮助吗? 多谢各位

编辑:我使用Chrome和Safari在同一台机器和局域网上进行了测试