HttpListener如何处理KeepAlive

时间:2016-02-26 13:42:54

标签: c# httplistener

我找不到任何关于HttpListener如何处理KeepAlive的文档。

从HttpListenercontext查看HttpListenerRequest时,我没有看到任何“GetRequest”方法,只看到了RequestStream。

是否可以假设HttpListener处理KeepAlive并每次创建一个新的Context?如果它重用了Context,我该如何处理多个请求呢?

我尝试了一个使用Internet Explorer的简单但完整的示例(请求中保持活动状态)。这会每次都创建一个新的上下文,但我不确定这是不是因为我正在处理流。

using System.IO;
using System.Net;

namespace Sandbox
{
    public class Program
    {
        private static void Main()
        {
            var listener = new HttpListener();

            // might need to execute elevated cmd: netsh add urlacl url=http://localhost:6302/ user=DOMAIN\user listen=yes
            listener.Prefixes.Add("http://localhost:6302/");

            listener.Start();
            var count = 0;
            while (true)
            {
                var context = listener.GetContext();
                try
                {
                    // Is this dispose the reason i get a new context each time?
                    using (var writer = new StreamWriter(context.Response.OutputStream))
                        writer.Write("Hello World! {0}", ++count);
                }
                finally
                {
                    // context.Response.Close();
                }
            }
        }
    }
}

0 个答案:

没有答案