2009-08-12 47 views
2

我想知道如何才能发出连续响应流而不最终关闭它。为了更好地解释我的问题,将asp页面视为代理来转发来自不同源的第三方流(由另一个源广播的音频流或视频流)ASP.net连续响应流

显然,Response.Write()或Response.BinaryWrite )将我限制为预定义的源。

在此先感谢。

回答

3

您可以使用当前HttpResponse对象的BufferOuput属性禁用响应缓冲。

+0

感谢您的反馈。还有以这种方式实际输出响应的问题,因为Response对象提供的方法只允许预定义的字节数组等。 基本上我需要两个并发运行的对象,一个是读取器,另一个是将从读取器读取的内容写入输出。 – mtranda 2009-08-12 20:02:12

1

我可以想象禁用响应缓冲或使用Response.Flush()定期应该做的伎俩。

通过设置IHttpHandler,您只需确保Process()方法永远不会执行完毕,因此您的请求也不会完成。

+0

关于您的约束到预定义的源你需要设置 1.从流 2.读取保存到缓冲 3.作家缓冲器到响应(的BinaryWrite) 4.冲洗响应来自步骤1 – 2009-08-12 20:12:57

+0

5.重复感谢那。我刚刚写了一封关于需要运行两个并发对象的文章,对网页来说似乎有点矫枉过正。另一方面,我想知道是否按照你提到的方式来做它会丢失任何数据包(因为它是一个直播流),尽管它不应该是一个大问题,特别是如果我要这样做小块。 – mtranda 2009-08-12 20:19:48

+0

使用返回Stream的WebClient和OpenRead方法,它将缓存传入的直播流,直到您使用Stream上的Read()方法弹出数据。 – 2009-08-12 20:32:03

0

除了尝试Response.Buffer = false和调用诸如Response.Flush()之外,确保在测试时不使用代理服务器/ Http调试器。在我关闭Fiddler之前,我没有得到这个工作。