我有以下简单的代码来处理我的应用程序中的一个HTTP请求。这段代码有效,但是,每当我尝试结束应用程序并调用close函数时,我都会得到一个异常和堆栈跟踪,表明这是在EndGetContext函数中发生的。我怎样才能避免这种情况以及阻止这种情况的正确方法是什么?我当然可以在waitforrequest函数中捕获异常,然后把它推到地毯下,但是,恕我直言,这不是阻止某事的好方法。由于在EndGetContext函数中发生异常,之后我无法做任何事情来检查侦听器是否停止,或者设置信号......
internal void Run()
{
m_HttpServer.Prefixes.Add(m_Config.PublicAccessSvcHttpPrefix);
m_HttpServer.Start();
WaitForRequest();
}
private async void WaitForRequest()
{
HttpListenerContext context = await m_HttpServer.GetContextAsync();
HandleRequest(context);
WaitForRequest();
}
internal void HandleRequest(...){...}
internal void Stop()
{
m_HttpServer.Close();
}
//Handle request function will proccess the incoming request and do som things
答案 0 :(得分:0)
我有同样的问题,我解决了这个问题:
m_HttpServer.Stop();
m_HttpServer.Close();