如何在uhttpsharp请求处理程序中关闭客户端连接?

时间:2019-04-11 00:52:33

标签: .net vb.net

uHttpServer存储库中的文档没有用于请求处理的完整示例。

我正在尝试使用uHttpServer.HttpServer实例以任意数据答复http请求。

这是我通过查看示例解决方案得出的。

  Dim hs As New uhttpsharp.HttpServer(New uhttpsharp.RequestProviders.HttpRequestProvider())
    hs.Use(New uhttpsharp.Listeners.TcpListenerAdapter(New System.Net.Sockets.TcpListener(Net.IPAddress.Any, 12345)))
    hs.Use(Function(context, nxt)
        Dim newBody = $"You asked for: {context.Request.Uri}"
        context.Response = New HttpResponse(HttpResponseCode.Ok, newBody, False)
        Return next()
    End Function)
    hs.Start()
    Console.ReadLine() 
    hs.Dispose()

现在的问题是,通过使用拦截代理进行检查,请求将永远保持待处理状态。

1 个答案:

答案 0 :(得分:0)

我最终弄清楚了。由于我认为这可能对其他人有用,因此将其放在此处。由于请求处理的实现方式,该库期望完成的任务(可用于Task.Factory.GetCompleted),以便正确关闭与客户端的连接。

    Dim hs As New uhttpsharp.HttpServer(New uhttpsharp.RequestProviders.HttpRequestProvider())
    hs.Use(New uhttpsharp.Listeners.TcpListenerAdapter(New System.Net.Sockets.TcpListener(Net.IPAddress.Any, 12345)))
    hs.Use(Function(context, nxt)
        Dim newBody = $"You asked for: {context.Request.Uri}"
        context.Response = New HttpResponse(HttpResponseCode.Ok, newBody, False)
        Return Task.Factory.GetCompleted()
    End Function)
    hs.Start()
    Console.ReadLine() 
    hs.Dispose()