我找不到任何关于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();
}
}
}
}
}