wrap listener in try/catch
This commit is contained in:
@@ -57,62 +57,69 @@ namespace UCS.IOTServer
|
||||
|
||||
private static void ListenerCallback(IAsyncResult result)
|
||||
{
|
||||
HttpListener listener = (HttpListener)result.AsyncState;
|
||||
if (_Stopping == true)
|
||||
try
|
||||
{
|
||||
listener.Close();
|
||||
return;
|
||||
}
|
||||
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
|
||||
|
||||
if (listener.IsListening)
|
||||
{
|
||||
HttpListenerContext context = listener.EndGetContext(result);
|
||||
HttpListenerRequest request = context.Request;
|
||||
|
||||
if (request.HttpMethod == "GET")
|
||||
HttpListener listener = (HttpListener)result.AsyncState;
|
||||
if (_Stopping == true)
|
||||
{
|
||||
//PRTG message
|
||||
RxLogEventFired?.Invoke(null, request.RawUrl);
|
||||
PrtgMessage prtgMessage = new PrtgMessage(request.RawUrl);
|
||||
if (prtgMessage.PrtgData == null)
|
||||
{
|
||||
SendFailed(context);
|
||||
Errorlog.Error($"prtgmessage is null: {request.RawUrl}");
|
||||
return;
|
||||
}
|
||||
IOTMessage iOTMessage = new IOTMessage(prtgMessage);
|
||||
ReceiveEventFiredIOTServerObject?.Invoke(null, iOTMessage);
|
||||
listener.Close();
|
||||
return;
|
||||
}
|
||||
if (request.HttpMethod == "POST")
|
||||
listener.BeginGetContext(new AsyncCallback(ListenerCallback), listener);
|
||||
|
||||
if (listener.IsListening)
|
||||
{
|
||||
//Nodered message
|
||||
using (var reader = new StreamReader(request.InputStream, request.ContentEncoding))
|
||||
HttpListenerContext context = listener.EndGetContext(result);
|
||||
HttpListenerRequest request = context.Request;
|
||||
|
||||
if (request.HttpMethod == "GET")
|
||||
{
|
||||
string jsondata = reader.ReadToEnd();
|
||||
RxLogEventFired?.Invoke(null, jsondata);
|
||||
try
|
||||
//PRTG message
|
||||
RxLogEventFired?.Invoke(null, request.RawUrl);
|
||||
PrtgMessage prtgMessage = new PrtgMessage(request.RawUrl);
|
||||
if (prtgMessage.PrtgData == null)
|
||||
{
|
||||
NoderedMessage noderedMessage = JsonConvert.DeserializeObject<NoderedMessage>(jsondata);
|
||||
if (noderedMessage == null)
|
||||
SendFailed(context);
|
||||
Errorlog.Error($"prtgmessage is null: {request.RawUrl}");
|
||||
return;
|
||||
}
|
||||
IOTMessage iOTMessage = new IOTMessage(prtgMessage);
|
||||
ReceiveEventFiredIOTServerObject?.Invoke(null, iOTMessage);
|
||||
}
|
||||
if (request.HttpMethod == "POST")
|
||||
{
|
||||
//Nodered message
|
||||
using (var reader = new StreamReader(request.InputStream, request.ContentEncoding))
|
||||
{
|
||||
string jsondata = reader.ReadToEnd();
|
||||
RxLogEventFired?.Invoke(null, jsondata);
|
||||
try
|
||||
{
|
||||
Errorlog.Error($"Noderedmesage is null: {jsondata}");
|
||||
NoderedMessage noderedMessage = JsonConvert.DeserializeObject<NoderedMessage>(jsondata);
|
||||
if (noderedMessage == null)
|
||||
{
|
||||
Errorlog.Error($"Noderedmesage is null: {jsondata}");
|
||||
SendFailed(context);
|
||||
return;
|
||||
}
|
||||
IOTMessage iOTMessage = new IOTMessage(noderedMessage);
|
||||
ReceiveEventFiredIOTServerObject?.Invoke(null, iOTMessage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Errorlog.Error(ex, $"Nodered json Deserialize error - {ex.Message}");
|
||||
Errorlog.Error(jsondata);
|
||||
SendFailed(context);
|
||||
return;
|
||||
}
|
||||
IOTMessage iOTMessage = new IOTMessage(noderedMessage);
|
||||
ReceiveEventFiredIOTServerObject?.Invoke(null, iOTMessage);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Errorlog.Error(ex, $"Nodered json Deserialize error - {ex.Message}");
|
||||
Errorlog.Error(jsondata);
|
||||
SendFailed(context);
|
||||
return;
|
||||
}
|
||||
}
|
||||
SendOk(context);
|
||||
}
|
||||
SendOk(context);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Errorlog.Error(ex, $"ListenerCallback Failed {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user