我编写了一个Windows服务,使用一个HttpListener异步处理来自点的请求.
它运行正常,但有时会遇到需要重新启动服务或服务器才能修复的问题.最初我用以下方法声明了侦听器对象:
public HttpListener PointsListener = new HttpListener();
Run Code Online (Sandbox Code Playgroud)
这是我开始收听的方法的代码.我是从OnStart服务方法中调用的:
public string ListenerStart()
{
try
{
if (!PointsListener.IsListening)
{
PointsListener.Prefixes.Add(String.Concat("http://*:", points_port, "/"));
PointsListener.Start();
PointsListener.BeginGetContext(PointProcessRequest, PointsListener);
LogWriter("Http listener activated on port " + points_port);
return "Listener started";
}
else
{
return "Listener is already started!";
}
}
catch (Exception err)
{
LogWriter("Error in LIstenerStart \r\n" + err.ToString());
return ("Error: " + err.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是处理请求的方法:
private void PointProcessRequest(IAsyncResult result)
{
HttpListener listener = (HttpListener)result.AsyncState;
HttpListenerContext context = listener.EndGetContext(result); …Run Code Online (Sandbox Code Playgroud) c# ×1