Silverlight 4.0 通过处理程序ASP.NET将文本流式传输到客户端

Silverlight 4.0 通过处理程序ASP.NET将文本流式传输到客户端,silverlight-4.0,c#-4.0,handler,Silverlight 4.0,C# 4.0,Handler,为了避免twitters streaming API没有跨域文件从客户端访问它(在本例中为Silverlight),我在一个web项目中创建了一个通用处理程序文件,它基本上从twitters下载流,并在读取流时将其写入客户端。 以下是处理程序代码: context.Response.Buffer = false; context.Response.ContentType = "text/plain"; WebRequest request = WebReque

为了避免twitters streaming API没有跨域文件从客户端访问它(在本例中为Silverlight),我在一个web项目中创建了一个通用处理程序文件,它基本上从twitters下载流,并在读取流时将其写入客户端。 以下是处理程序代码:

 context.Response.Buffer = false;
        context.Response.ContentType = "text/plain";

        WebRequest request = WebRequest.Create("http://stream.twitter.com/1/statuses/filter.json?locations=-180,-90,180,90");
        request.Credentials = new NetworkCredential("username", "password");
        StreamReader responseStream = new StreamReader(request.GetResponse().GetResponseStream(), Encoding.GetEncoding("utf-8"));

        while (!responseStream.EndOfStream)
        {
                string line = "(~!-/" + responseStream.ReadLine() + "~!-/)";
               context.Response.BinaryWrite((Encoding.UTF8.GetBytes(line)));}
这确实有效,但问题是一旦客户端断开连接,处理程序就会继续下载。那么,如何判断客户机是否仍在忙于接收请求,如果没有,则结束while循环

另外,我的第二个问题是,在客户端执行“ReadLine()”什么都不做,大概是因为它将整个流计算为一行,所以永远不会得到完整的响应。为了解决这个问题,我一个字节一个字节地读它,当它看到“(~!-/”,它知道这是一行。我知道,非常粗糙

谢谢!找到答案了

while (context.Response.IsClientConnected)
:)