如何解决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 举报,一经查实,本站将立刻删除。