OpenALPR Webhook Processor for IP Cameras

Yup, overlays are working again. But I'm not getting anything sent to the local OpenALPR server. Is that normal? Still working on that functionality? I also cannot pull up a plate on the Swagger endpoint. I type in a plate that was seen and overlayed, but it doesn't show up in Swager.

Edit: Never mind. I didn't use all caps! They show up now in Swagger if using all caps.
 
Last edited:
Check the logs for any errors, when you search for plate numbers it's case sensitive. i can verify the webhook relay is working when i test it with ngrok, there is probably something needing to be done on the openalpr server to make this hack work, it might need the camera registered first or something. haven't looked into it yet.
 
  • Like
Reactions: biggen
Do you need any more logs from your relay to my local OpenALPR server or are you good there?
 
look at the logs when a car goes by, make sure saving it to the database doesn't throw any errors. if ABC123 goes by, searching for abc123 isn't going to work.
 
Yeah I got that figured out. I edited my above post. I didn't know if you needed anything else going towards the OpenALPR server to help troubleshoot why they don't show up there.
 
When I tested with postman I was able to get the fake cameras to show up on the agent page as "unmanaged" which is hiding them in the results. need to find a way to make the server think they are active 1609900008301.png
 
  • Like
Reactions: tech101 and biggen
It may call home to try and figure out if a licensed agent is posting them. The agent that posts may provide a license ID that the server checks to make sure the license is active?
 
Last edited:
the web server doesn't have any code to talk to openalpr, still need to figure out what is happening though.

it looks like the watchman daemon sends heartbeat packets to the openalpr server to let it know it's alive and that it has cameras actively watching. if we can fake those we can make the openalpr server think they are real.
 
Last edited:
  • Like
Reactions: biggen and tech101
Yes after I send a heartbeat with the camera ids i can then start sending the webhooks and they show up in the UI:

1609903146724.png

1609903175695.png
 
ok i have the heartbeat functionality roughed in, check the example appsettings file a lot changed this time, i put some comments on where to find the values on the openalpr cloud dashboard. if you don't have an openalpr server you can erase the OpenAlprWebServer section
 
I'm not sure where "CompanyId": "d2ebd631-f68b-4d04-bb20-94e5a361e3d6", is located. Its says the alprd.conf but where is that file? My Watchman agent is the docker version.
 
Overlays appear to not be working again with this version (They are working. See next post). I'm also not getting anything sent to my local OpenALPR server but that may be because I don't know where the CompanyId is located to be input into the appsettings.json file. Here are the logs I just grabbed from your newest release and my appsettings.com file:

JSON:
{"log":"[13:36:05 WRN] 'AddEntityFramework*' was called on the service provider, but 'UseInternalServiceProvider' wasn't called in the DbContext options configuration. Remove the 'AddEntityFramework*' call as in most cases it's not needed and might cause conflicts with other products and services registered in the same service provider.\n","stream":"stdout","time":"2021-01-06T13:36:05.344095944Z"}
{"log":"[13:36:06 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:36:06.04773297Z"}
{"log":"[13:36:06 INF] Executed DbCommand (20ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:36:06.396026786Z"}
{"log":"SELECT COUNT(*) FROM \"sqlite_master\" WHERE \"name\" = '__EFMigrationsHistory' AND \"type\" = 'table';\n","stream":"stdout","time":"2021-01-06T13:36:06.396063212Z"}
{"log":"[13:36:06 INF] Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:36:06.429601944Z"}
{"log":"SELECT \"MigrationId\", \"ProductVersion\"\n","stream":"stdout","time":"2021-01-06T13:36:06.429630372Z"}
{"log":"FROM \"__EFMigrationsHistory\"\n","stream":"stdout","time":"2021-01-06T13:36:06.429639166Z"}
{"log":"ORDER BY \"MigrationId\";\n","stream":"stdout","time":"2021-01-06T13:36:06.429645783Z"}
{"log":"[13:36:06 INF] Now listening on: http://[::]:80\n","stream":"stdout","time":"2021-01-06T13:36:06.552804915Z"}
{"log":"[13:36:06 INF] Application started. Press Ctrl+C to shut down.\n","stream":"stdout","time":"2021-01-06T13:36:06.553148303Z"}
{"log":"[13:36:06 INF] Hosting environment: Production\n","stream":"stdout","time":"2021-01-06T13:36:06.553222954Z"}
{"log":"[13:36:06 INF] Content root path: /app\n","stream":"stdout","time":"2021-01-06T13:36:06.553381192Z"}
{"log":"[13:38:44 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 17623\n","stream":"stdout","time":"2021-01-06T13:38:44.084043734Z"}
{"log":"[13:38:44 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:38:44.249624698Z"}
{"log":"[13:38:44 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:38:44.339573101Z"}
{"log":"[13:38:44 INF] request received from: ::ffff:18.206.234.148\n","stream":"stdout","time":"2021-01-06T13:38:44.585764534Z"}
{"log":"[13:38:44 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 316.9308ms\n","stream":"stdout","time":"2021-01-06T13:38:44.674418455Z"}
{"log":"[13:38:44 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:38:44.678464976Z"}
{"log":"[13:38:44 ERR] HTTP POST /webhook responded 500 in 594.8248 ms\n","stream":"stdout","time":"2021-01-06T13:38:44.754832604Z"}
{"log":"System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.\n","stream":"stdout","time":"2021-01-06T13:38:44.7549053Z"}
{"log":" ---\u003e System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.\n","stream":"stdout","time":"2021-01-06T13:38:44.754917197Z"}
{"log":"   at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)\n","stream":"stdout","time":"2021-01-06T13:38:44.75493699Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.754946289Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.754980196Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.754990471Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.754997517Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755014426Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755021951Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755029487Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755036663Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755043774Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755050776Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755058018Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755065022Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755071955Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.75508929Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755097904Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755104712Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755112169Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755119432Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755126405Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755135543Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755212646Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755225455Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755232872Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755255759Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755264581Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755272193Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755279217Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755288322Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755295532Z"}
{"log":"   at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.755302212Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:38:44.755308959Z"}
{"log":"   at System.Net.Security.SslStream.ThrowIfExceptional()\n","stream":"stdout","time":"2021-01-06T13:38:44.755317932Z"}
{"log":"   at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)\n","stream":"stdout","time":"2021-01-06T13:38:44.755324316Z"}
{"log":"   at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)\n","stream":"stdout","time":"2021-01-06T13:38:44.755331236Z"}
{"log":"   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)\n","stream":"stdout","time":"2021-01-06T13:38:44.755337968Z"}
{"log":"   at System.Net.Security.SslStream.\u003c\u003ec.\u003cAuthenticateAsClientAsync\u003eb__65_1(IAsyncResult iar)\n","stream":"stdout","time":"2021-01-06T13:38:44.755346832Z"}
{"log":"   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n","stream":"stdout","time":"2021-01-06T13:38:44.755354813Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:38:44.755362753Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755369669Z"}
{"log":"   --- End of inner exception stack trace ---\n","stream":"stdout","time":"2021-01-06T13:38:44.755379916Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755387422Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755395243Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755404254Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755411675Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755418777Z"}
{"log":"   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755425988Z"}
{"log":"   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.755442849Z"}
{"log":"   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n","stream":"stdout","time":"2021-01-06T13:38:44.755450851Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.RelayWebhookAsync(String rawWebhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 91\n","stream":"stdout","time":"2021-01-06T13:38:44.755458002Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.HandleWebhookAsync(String rawWebhook, Webhook webhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 42\n","stream":"stdout","time":"2021-01-06T13:38:44.755467883Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post() in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 64\n","stream":"stdout","time":"2021-01-06T13:38:44.755475576Z"}
{"log":"   at lambda_method(Closure , Object )\n","stream":"stdout","time":"2021-01-06T13:38:44.755485016Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()\n","stream":"stdout","time":"2021-01-06T13:38:44.755494374Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-06T13:38:44.755501331Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeActionMethodAsync\u003eg__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n","stream":"stdout","time":"2021-01-06T13:38:44.755614505Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeNextActionFilterAsync\u003eg__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.755628716Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-06T13:38:44.755639519Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.755647377Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.755655253Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.755662993Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-06T13:38:44.755673182Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-06T13:38:44.755680513Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-06T13:38:44.755688245Z"}
{"log":"   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:38:44.755695119Z"}
{"log":"   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\n","stream":"stdout","time":"2021-01-06T13:38:44.755715454Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:38:44.755723993Z"}
{"log":"[13:38:44 ERR] Connection id \"0HM5I91HELD5U\", Request id \"0HM5I91HELD5U:00000001\": An unhandled exception was thrown by the application.\n","stream":"stdout","time":"2021-01-06T13:38:44.779809026Z"}
{"log":"System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.\n","stream":"stdout","time":"2021-01-06T13:38:44.779858915Z"}
{"log":" ---\u003e System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.\n","stream":"stdout","time":"2021-01-06T13:38:44.77986894Z"}
{"log":"   at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)\n","stream":"stdout","time":"2021-01-06T13:38:44.779878881Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779886556Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779894086Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779903251Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779913575Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779920908Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779927976Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779935694Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779943072Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779950446Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779957806Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779965346Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779972494Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779981996Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.77999171Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.779999767Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780007043Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.78003266Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780041222Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780048635Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780056613Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780064119Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780072751Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780082156Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780089772Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780096944Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780104029Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780111237Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780118359Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780125321Z"}
{"log":"   at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:38:44.780132474Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:38:44.780139374Z"}
{"log":"   at System.Net.Security.SslStream.ThrowIfExceptional()\n","stream":"stdout","time":"2021-01-06T13:38:44.780147593Z"}
{"log":"   at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)\n","stream":"stdout","time":"2021-01-06T13:38:44.780155687Z"}
{"log":"   at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)\n","stream":"stdout","time":"2021-01-06T13:38:44.780164618Z"}
{"log":"   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)\n","stream":"stdout","time":"2021-01-06T13:38:44.780193436Z"}
{"log":"   at System.Net.Security.SslStream.\u003c\u003ec.\u003cAuthenticateAsClientAsync\u003eb__65_1(IAsyncResult iar)\n","stream":"stdout","time":"2021-01-06T13:38:44.78020237Z"}
{"log":"   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n","stream":"stdout","time":"2021-01-06T13:38:44.780210417Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:38:44.780217788Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780224752Z"}
{"log":"   --- End of inner exception stack trace ---\n","stream":"stdout","time":"2021-01-06T13:38:44.780239313Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780248557Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780257674Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780265443Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780272608Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780279508Z"}
{"log":"   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780286706Z"}
{"log":"   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:38:44.780294825Z"}
{"log":"   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n","stream":"stdout","time":"2021-01-06T13:38:44.780301873Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.RelayWebhookAsync(String rawWebhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 91\n","stream":"stdout","time":"2021-01-06T13:38:44.780309182Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.HandleWebhookAsync(String rawWebhook, Webhook webhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 42\n","stream":"stdout","time":"2021-01-06T13:38:44.780317589Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post() in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 64\n","stream":"stdout","time":"2021-01-06T13:38:44.780326454Z"}
{"log":"   at lambda_method(Closure , Object )\n","stream":"stdout","time":"2021-01-06T13:38:44.780335743Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()\n","stream":"stdout","time":"2021-01-06T13:38:44.780344667Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-06T13:38:44.780353808Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeActionMethodAsync\u003eg__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n","stream":"stdout","time":"2021-01-06T13:38:44.780361789Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeNextActionFilterAsync\u003eg__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.780369521Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-06T13:38:44.780377463Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.780384455Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.780397936Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:38:44.780406668Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-06T13:38:44.780417024Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-06T13:38:44.780426537Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-06T13:38:44.780434937Z"}
{"log":"   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:38:44.780443012Z"}
{"log":"   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\n","stream":"stdout","time":"2021-01-06T13:38:44.780450673Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:38:44.780457916Z"}
{"log":"   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\n","stream":"stdout","time":"2021-01-06T13:38:44.780465214Z"}
{"log":"[13:38:44 INF] Request finished in 714.1056ms 500 \n","stream":"stdout","time":"2021-01-06T13:38:44.786100144Z"}
{"log":"[13:39:22 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 20364\n","stream":"stdout","time":"2021-01-06T13:39:22.601998Z"}
{"log":"[13:39:22 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:39:22.612029146Z"}
{"log":"[13:39:22 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:39:22.61475673Z"}
{"log":"[13:39:22 INF] request received from: ::ffff:35.170.81.143\n","stream":"stdout","time":"2021-01-06T13:39:22.744244654Z"}
{"log":"[13:39:22 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 151.9176ms\n","stream":"stdout","time":"2021-01-06T13:39:22.767142807Z"}
{"log":"[13:39:22 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:39:22.768203619Z"}
{"log":"[13:39:22 ERR] HTTP POST /webhook responded 500 in 167.2311 ms\n","stream":"stdout","time":"2021-01-06T13:39:22.776593313Z"}
{"log":"System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.\n","stream":"stdout","time":"2021-01-06T13:39:22.776638952Z"}
{"log":" ---\u003e System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.\n","stream":"stdout","time":"2021-01-06T13:39:22.777128892Z"}
{"log":"   at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)\n","stream":"stdout","time":"2021-01-06T13:39:22.777155852Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.777837013Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.777893247Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.778408657Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.7784509Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.778824332Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.778848444Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.778859237Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.779273066Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.779303045Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.779716167Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.779742427Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780088707Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780106018Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780402402Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780421309Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780713362Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.780732548Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781020032Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781039306Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781048274Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781349118Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781366949Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781701886Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.781779868Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.782252206Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.782286573Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.782939367Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.783003526Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.783758847Z"}
{"log":"   at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.78384572Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:39:22.783878061Z"}
{"log":"   at System.Net.Security.SslStream.ThrowIfExceptional()\n","stream":"stdout","time":"2021-01-06T13:39:22.783891532Z"}
{"log":"   at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)\n","stream":"stdout","time":"2021-01-06T13:39:22.784856465Z"}
{"log":"   at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)\n","stream":"stdout","time":"2021-01-06T13:39:22.784956054Z"}
{"log":"   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)\n","stream":"stdout","time":"2021-01-06T13:39:22.784977363Z"}
{"log":"   at System.Net.Security.SslStream.\u003c\u003ec.\u003cAuthenticateAsClientAsync\u003eb__65_1(IAsyncResult iar)\n","stream":"stdout","time":"2021-01-06T13:39:22.785653936Z"}
{"log":"   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n","stream":"stdout","time":"2021-01-06T13:39:22.785699463Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:39:22.786316658Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786387506Z"}
{"log":"   --- End of inner exception stack trace ---\n","stream":"stdout","time":"2021-01-06T13:39:22.786598193Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786645382Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786827698Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786848636Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786979082Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.786997814Z"}
{"log":"   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.787156721Z"}
{"log":"   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.787176366Z"}
{"log":"   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n","stream":"stdout","time":"2021-01-06T13:39:22.787294103Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.RelayWebhookAsync(String rawWebhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 91\n","stream":"stdout","time":"2021-01-06T13:39:22.787420914Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.HandleWebhookAsync(String rawWebhook, Webhook webhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 42\n","stream":"stdout","time":"2021-01-06T13:39:22.787439491Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post() in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 64\n","stream":"stdout","time":"2021-01-06T13:39:22.787557281Z"}
{"log":"   at lambda_method(Closure , Object )\n","stream":"stdout","time":"2021-01-06T13:39:22.787574076Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()\n","stream":"stdout","time":"2021-01-06T13:39:22.787582588Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-06T13:39:22.787686998Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeActionMethodAsync\u003eg__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n","stream":"stdout","time":"2021-01-06T13:39:22.787898101Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeNextActionFilterAsync\u003eg__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.788039051Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-06T13:39:22.788064505Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.788202735Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.788358858Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.788377599Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-06T13:39:22.788526671Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-06T13:39:22.788544164Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-06T13:39:22.788728151Z"}
{"log":"   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:39:22.788749319Z"}
{"log":"   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\n","stream":"stdout","time":"2021-01-06T13:39:22.78898809Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:39:22.789013653Z"}
{"log":"[13:39:22 ERR] Connection id \"0HM5I91HELD5V\", Request id \"0HM5I91HELD5V:00000001\": An unhandled exception was thrown by the application.\n","stream":"stdout","time":"2021-01-06T13:39:22.807171164Z"}
{"log":"System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.\n","stream":"stdout","time":"2021-01-06T13:39:22.807228387Z"}
{"log":" ---\u003e System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.\n","stream":"stdout","time":"2021-01-06T13:39:22.807360706Z"}
{"log":"   at System.Net.Security.SslStream.StartSendAuthResetSignal(ProtocolToken message, AsyncProtocolRequest asyncRequest, ExceptionDispatchInfo exception)\n","stream":"stdout","time":"2021-01-06T13:39:22.807463211Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807477951Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807567944Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807590796Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807599837Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807676637Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807688739Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807789715Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807801952Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807892861Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807916683Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.807991403Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808003505Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808076551Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808088368Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808095791Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808191858Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808228322Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808322229Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808334846Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.80843202Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808443799Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808537833Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808551689Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808640451Z"}
{"log":"   at System.Net.Security.SslStream.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808674716Z"}
{"log":"   at System.Net.Security.SslStream.CheckCompletionBeforeNextReceive(ProtocolToken message, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.80868383Z"}
{"log":"   at System.Net.Security.SslStream.StartSendBlob(Byte[] incoming, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808753881Z"}
{"log":"   at System.Net.Security.SslStream.ProcessReceivedBlob(Byte[] buffer, Int32 count, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808766005Z"}
{"log":"   at System.Net.Security.SslStream.StartReadFrame(Byte[] buffer, Int32 readBytes, AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808861713Z"}
{"log":"   at System.Net.Security.SslStream.PartialFrameCallback(AsyncProtocolRequest asyncRequest)\n","stream":"stdout","time":"2021-01-06T13:39:22.808877115Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:39:22.808889016Z"}
{"log":"   at System.Net.Security.SslStream.ThrowIfExceptional()\n","stream":"stdout","time":"2021-01-06T13:39:22.808960563Z"}
{"log":"   at System.Net.Security.SslStream.InternalEndProcessAuthentication(LazyAsyncResult lazyResult)\n","stream":"stdout","time":"2021-01-06T13:39:22.808987023Z"}
{"log":"   at System.Net.Security.SslStream.EndProcessAuthentication(IAsyncResult result)\n","stream":"stdout","time":"2021-01-06T13:39:22.808995553Z"}
{"log":"   at System.Net.Security.SslStream.EndAuthenticateAsClient(IAsyncResult asyncResult)\n","stream":"stdout","time":"2021-01-06T13:39:22.809071966Z"}
{"log":"   at System.Net.Security.SslStream.\u003c\u003ec.\u003cAuthenticateAsClientAsync\u003eb__65_1(IAsyncResult iar)\n","stream":"stdout","time":"2021-01-06T13:39:22.80908376Z"}
{"log":"   at System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)\n","stream":"stdout","time":"2021-01-06T13:39:22.809225702Z"}
{"log":"--- End of stack trace from previous location where exception was thrown ---\n","stream":"stdout","time":"2021-01-06T13:39:22.809240069Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809392898Z"}
{"log":"   --- End of inner exception stack trace ---\n","stream":"stdout","time":"2021-01-06T13:39:22.809420666Z"}
{"log":"   at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809428719Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean allowHttp2, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809520369Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809603356Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809627531Z"}
{"log":"   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.80970358Z"}
{"log":"   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809716574Z"}
{"log":"   at System.Net.Http.DiagnosticsHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)\n","stream":"stdout","time":"2021-01-06T13:39:22.809810937Z"}
{"log":"   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)\n","stream":"stdout","time":"2021-01-06T13:39:22.809822756Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.RelayWebhookAsync(String rawWebhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 91\n","stream":"stdout","time":"2021-01-06T13:39:22.809913659Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookHandler.HandleWebhookAsync(String rawWebhook, Webhook webhook) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookHandler.cs:line 42\n","stream":"stdout","time":"2021-01-06T13:39:22.80999038Z"}
{"log":"   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post() in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 64\n","stream":"stdout","time":"2021-01-06T13:39:22.810002738Z"}
{"log":"   at lambda_method(Closure , Object )\n","stream":"stdout","time":"2021-01-06T13:39:22.81002903Z"}
{"log":"   at Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult()\n","stream":"stdout","time":"2021-01-06T13:39:22.810101435Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)\n","stream":"stdout","time":"2021-01-06T13:39:22.810115467Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeActionMethodAsync\u003eg__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)\n","stream":"stdout","time":"2021-01-06T13:39:22.810246053Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeNextActionFilterAsync\u003eg__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.810348052Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\n","stream":"stdout","time":"2021-01-06T13:39:22.810365038Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State\u0026 next, Scope\u0026 scope, Object\u0026 state, Boolean\u0026 isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.810470581Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.\u003cInvokeInnerFilterAsync\u003eg__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.810595121Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeFilterPipelineAsync\u003eg__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\n","stream":"stdout","time":"2021-01-06T13:39:22.810697254Z"}
{"log":"   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.\u003cInvokeAsync\u003eg__Logged|17_1(ResourceInvoker invoker)\n","stream":"stdout","time":"2021-01-06T13:39:22.810711202Z"}
{"log":"   at Microsoft.AspNetCore.Routing.EndpointMiddleware.\u003cInvoke\u003eg__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)\n","stream":"stdout","time":"2021-01-06T13:39:22.810805318Z"}
{"log":"   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\n","stream":"stdout","time":"2021-01-06T13:39:22.810835889Z"}
{"log":"   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:39:22.810844671Z"}
{"log":"   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)\n","stream":"stdout","time":"2021-01-06T13:39:22.810914028Z"}
{"log":"   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)\n","stream":"stdout","time":"2021-01-06T13:39:22.810928018Z"}
{"log":"   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)\n","stream":"stdout","time":"2021-01-06T13:39:22.811022191Z"}
{"log":"[13:39:22 INF] Request finished in 224.0025ms 500 \n","stream":"stdout","time":"2021-01-06T13:39:22.812141638Z"}
{"log":"[13:39:44 INF] Application is shutting down...\n","stream":"stdout","time":"2021-01-06T13:39:44.149990748Z"}

JSON:
{
  "AllowedHosts": "*",
  "OpenAlprAgent": {
    "Cameras": [
      {
        "Latitude": 12.3456,
        "Longitude": -12.3456,
        "Manufacturer": "Dahua",
        "Name": "Home",
        "OpenAlprCameraId": 123456789,
        "Password": "password",
        "UpdateOverlayTextUrl": "http://10.200.200.14/cgi-bin/configManager.cgi?action=setConfig&VideoWidget[0].CustomTitle[1].Text=",
        "Username": "admin"
      }
    ],
    "CompanyId": "d2ebd631-f68b-4d04-bb20-94e5a361e3d6",
    "Hostname": "<redacted>",
    "OpenAlprWebServer": {
      "Endpoint": "http://10.200.200.54/push/",
      "IgnoreSslErrors": false
    },
    "Uid": "<redacted>",
    "Version": "2.7.102"
  },
  "ConnectionStrings": {
    "ProcessorContext": "Data Source=config/processor.db"
  },
  "WebRequestLoggingEnabled": false
}
 
Disregard overlays not working. I saw there were HTTPS errors in the log so I enabled IgnoreSslErrors": true and that got the overlays working again. Still nothing posted to my local OpenALPR server though. Here is an updated log file I just ran if it is helpful.
JSON:
{"log":"[13:46:18 WRN] 'AddEntityFramework*' was called on the service provider, but 'UseInternalServiceProvider' wasn't called in the DbContext options configuration. Remove the 'AddEntityFramework*' call as in most cases it's not needed and might cause conflicts with other products and services registered in the same service provider.\n","stream":"stdout","time":"2021-01-06T13:46:18.856164269Z"}
{"log":"[13:46:20 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:46:20.111658628Z"}
{"log":"[13:46:20 INF] Executed DbCommand (19ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:46:20.375460116Z"}
{"log":"SELECT COUNT(*) FROM \"sqlite_master\" WHERE \"name\" = '__EFMigrationsHistory' AND \"type\" = 'table';\n","stream":"stdout","time":"2021-01-06T13:46:20.375508124Z"}
{"log":"[13:46:20 INF] Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:46:20.414160446Z"}
{"log":"SELECT \"MigrationId\", \"ProductVersion\"\n","stream":"stdout","time":"2021-01-06T13:46:20.414193113Z"}
{"log":"FROM \"__EFMigrationsHistory\"\n","stream":"stdout","time":"2021-01-06T13:46:20.414218407Z"}
{"log":"ORDER BY \"MigrationId\";\n","stream":"stdout","time":"2021-01-06T13:46:20.414225633Z"}
{"log":"[13:46:20 INF] Now listening on: http://[::]:80\n","stream":"stdout","time":"2021-01-06T13:46:20.568812188Z"}
{"log":"[13:46:20 INF] Application started. Press Ctrl+C to shut down.\n","stream":"stdout","time":"2021-01-06T13:46:20.569368886Z"}
{"log":"[13:46:20 INF] Hosting environment: Production\n","stream":"stdout","time":"2021-01-06T13:46:20.569458897Z"}
{"log":"[13:46:20 INF] Content root path: /app\n","stream":"stdout","time":"2021-01-06T13:46:20.56965937Z"}
{"log":"[13:46:52 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 19230\n","stream":"stdout","time":"2021-01-06T13:46:52.954473341Z"}
{"log":"[13:46:53 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:46:53.181209895Z"}
{"log":"[13:46:53 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:46:53.262070542Z"}
{"log":"[13:46:54 INF] request received from: ::ffff:54.165.211.244\n","stream":"stdout","time":"2021-01-06T13:46:54.504624335Z"}
{"log":"[13:46:54 INF] adding job for plate: NQNC42\n","stream":"stdout","time":"2021-01-06T13:46:54.585004143Z"}
{"log":"[13:46:54 INF] processing job for plate: NQNC42\n","stream":"stdout","time":"2021-01-06T13:46:54.58553556Z"}
{"log":"[13:46:54 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:46:54.650694094Z"}
{"log":"[13:46:55 INF] Executed DbCommand (8ms) [Parameters=[@p0='?', @p1='?', @p2='?', @p3='?', @p4='?', @p5='?', @p6='?' (Size = 4240), @p7='?' (Size = 6), @p8='?'], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:46:55.082695845Z"}
{"log":"INSERT INTO \"PlateGroups\" (\"Id\", \"AlertDescription\", \"IsAlert\", \"OpenAlprCameraId\", \"OpenAlprProcessingTimeMs\", \"PlateConfidence\", \"PlateJpeg\", \"PlateNumber\", \"ReceivedOn\")\n","stream":"stdout","time":"2021-01-06T13:46:55.082735088Z"}
{"log":"VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8);\n","stream":"stdout","time":"2021-01-06T13:46:55.08275031Z"}
{"log":"[13:46:55 INF] Executing HttpStatusCodeResult, setting HTTP status code 200\n","stream":"stdout","time":"2021-01-06T13:46:55.209193695Z"}
{"log":"[13:46:55 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 1948.2033ms\n","stream":"stdout","time":"2021-01-06T13:46:55.219448306Z"}
{"log":"[13:46:55 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:46:55.222026051Z"}
{"log":"[13:46:55 INF] HTTP POST /webhook responded 200 in 2266.9573 ms\n","stream":"stdout","time":"2021-01-06T13:46:55.228420243Z"}
{"log":"[13:46:55 INF] Request finished in 2292.4026ms 200 \n","stream":"stdout","time":"2021-01-06T13:46:55.234384575Z"}
{"log":"[13:47:00 INF] clearing expired overlay for: 254963574\n","stream":"stdout","time":"2021-01-06T13:47:00.478840695Z"}
{"log":"[13:48:16 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 19297\n","stream":"stdout","time":"2021-01-06T13:48:16.027062524Z"}
{"log":"[13:48:16 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:48:16.038588201Z"}
{"log":"[13:48:16 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:48:16.040270712Z"}
{"log":"[13:48:16 INF] request received from: ::ffff:18.206.234.148\n","stream":"stdout","time":"2021-01-06T13:48:16.216500457Z"}
{"log":"[13:48:16 INF] adding job for plate: EFVP41\n","stream":"stdout","time":"2021-01-06T13:48:16.255456594Z"}
{"log":"[13:48:16 INF] processing job for plate: EFVP41\n","stream":"stdout","time":"2021-01-06T13:48:16.256461888Z"}
{"log":"[13:48:16 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:48:16.380265406Z"}
{"log":"[13:48:16 INF] Executed DbCommand (1ms) [Parameters=[@p0='?', @p1='?', @p2='?', @p3='?', @p4='?', @p5='?', @p6='?' (Size = 4004), @p7='?' (Size = 6), @p8='?'], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:48:16.391108044Z"}
{"log":"INSERT INTO \"PlateGroups\" (\"Id\", \"AlertDescription\", \"IsAlert\", \"OpenAlprCameraId\", \"OpenAlprProcessingTimeMs\", \"PlateConfidence\", \"PlateJpeg\", \"PlateNumber\", \"ReceivedOn\")\n","stream":"stdout","time":"2021-01-06T13:48:16.391146807Z"}
{"log":"VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8);\n","stream":"stdout","time":"2021-01-06T13:48:16.391160657Z"}
{"log":"[13:48:16 INF] Executing HttpStatusCodeResult, setting HTTP status code 200\n","stream":"stdout","time":"2021-01-06T13:48:16.515739403Z"}
{"log":"[13:48:16 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 475.5477ms\n","stream":"stdout","time":"2021-01-06T13:48:16.516523187Z"}
{"log":"[13:48:16 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:48:16.516688166Z"}
{"log":"[13:48:16 INF] HTTP POST /webhook responded 200 in 489.0050 ms\n","stream":"stdout","time":"2021-01-06T13:48:16.517156021Z"}
{"log":"[13:48:16 INF] Request finished in 507.3702ms 200 \n","stream":"stdout","time":"2021-01-06T13:48:16.523513919Z"}
{"log":"[13:48:21 INF] clearing expired overlay for: 254963574\n","stream":"stdout","time":"2021-01-06T13:48:21.7963487Z"}
{"log":"[13:49:36 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 22157\n","stream":"stdout","time":"2021-01-06T13:49:36.221430322Z"}
{"log":"[13:49:36 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:49:36.225076691Z"}
{"log":"[13:49:36 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:49:36.227032107Z"}
{"log":"[13:49:36 INF] request received from: ::ffff:35.170.81.143\n","stream":"stdout","time":"2021-01-06T13:49:36.367537248Z"}
{"log":"[13:49:36 INF] adding job for plate: GNCC32\n","stream":"stdout","time":"2021-01-06T13:49:36.392276351Z"}
{"log":"[13:49:36 INF] processing job for plate: GNCC32\n","stream":"stdout","time":"2021-01-06T13:49:36.39277749Z"}
{"log":"[13:49:36 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:49:36.399323336Z"}
{"log":"[13:49:36 INF] Executed DbCommand (1ms) [Parameters=[@p0='?', @p1='?', @p2='?', @p3='?', @p4='?', @p5='?', @p6='?' (Size = 4012), @p7='?' (Size = 6), @p8='?'], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:49:36.410806388Z"}
{"log":"INSERT INTO \"PlateGroups\" (\"Id\", \"AlertDescription\", \"IsAlert\", \"OpenAlprCameraId\", \"OpenAlprProcessingTimeMs\", \"PlateConfidence\", \"PlateJpeg\", \"PlateNumber\", \"ReceivedOn\")\n","stream":"stdout","time":"2021-01-06T13:49:36.41084638Z"}
{"log":"VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8);\n","stream":"stdout","time":"2021-01-06T13:49:36.410858026Z"}
{"log":"[13:49:36 INF] Executing HttpStatusCodeResult, setting HTTP status code 200\n","stream":"stdout","time":"2021-01-06T13:49:36.657039326Z"}
{"log":"[13:49:36 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 430.7957ms\n","stream":"stdout","time":"2021-01-06T13:49:36.658804519Z"}
{"log":"[13:49:36 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:49:36.660150379Z"}
{"log":"[13:49:36 INF] HTTP POST /webhook responded 200 in 439.1662 ms\n","stream":"stdout","time":"2021-01-06T13:49:36.661325155Z"}
{"log":"[13:49:36 INF] Request finished in 443.7176ms 200 \n","stream":"stdout","time":"2021-01-06T13:49:36.663648799Z"}
{"log":"[13:49:42 INF] clearing expired overlay for: 254963574\n","stream":"stdout","time":"2021-01-06T13:49:42.124363014Z"}
{"log":"[13:50:23 INF] Request starting HTTP/1.1 POST http://<redacted>:3859/webhook application/json 18855\n","stream":"stdout","time":"2021-01-06T13:50:23.161656834Z"}
{"log":"[13:50:23 INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:50:23.17554759Z"}
{"log":"[13:50:23 INF] Route matched with {action = \"Post\", controller = \"Webhook\"}. Executing controller action with signature System.Threading.Tasks.Task`1[Microsoft.AspNetCore.Mvc.ActionResult] Post() on controller OpenAlprWebhookProcessor.WebhookProcessor.WebhookController (OpenAlprWebhookProcessor).\n","stream":"stdout","time":"2021-01-06T13:50:23.177527912Z"}
{"log":"[13:50:23 INF] request received from: ::ffff:54.221.95.194\n","stream":"stdout","time":"2021-01-06T13:50:23.343855493Z"}
{"log":"[13:50:23 INF] adding job for plate: Z75EPA\n","stream":"stdout","time":"2021-01-06T13:50:23.380293399Z"}
{"log":"[13:50:23 INF] processing job for plate: Z75EPA\n","stream":"stdout","time":"2021-01-06T13:50:23.38644295Z"}
{"log":"[13:50:23 INF] Entity Framework Core 3.1.10 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None\n","stream":"stdout","time":"2021-01-06T13:50:23.391516503Z"}
{"log":"[13:50:23 INF] Executed DbCommand (1ms) [Parameters=[@p0='?', @p1='?', @p2='?', @p3='?', @p4='?', @p5='?', @p6='?' (Size = 3748), @p7='?' (Size = 6), @p8='?'], CommandType='Text', CommandTimeout='30']\n","stream":"stdout","time":"2021-01-06T13:50:23.429123125Z"}
{"log":"INSERT INTO \"PlateGroups\" (\"Id\", \"AlertDescription\", \"IsAlert\", \"OpenAlprCameraId\", \"OpenAlprProcessingTimeMs\", \"PlateConfidence\", \"PlateJpeg\", \"PlateNumber\", \"ReceivedOn\")\n","stream":"stdout","time":"2021-01-06T13:50:23.42916856Z"}
{"log":"VALUES (@p0, @p1, @p2, @p3, @p4, @p5, @p6, @p7, @p8);\n","stream":"stdout","time":"2021-01-06T13:50:23.429205992Z"}
{"log":"[13:50:23 INF] Executing HttpStatusCodeResult, setting HTTP status code 200\n","stream":"stdout","time":"2021-01-06T13:50:23.645073002Z"}
{"log":"[13:50:23 INF] Executed action OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor) in 467.7216ms\n","stream":"stdout","time":"2021-01-06T13:50:23.646455889Z"}
{"log":"[13:50:23 INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'\n","stream":"stdout","time":"2021-01-06T13:50:23.647154711Z"}
{"log":"[13:50:23 INF] HTTP POST /webhook responded 200 in 485.3966 ms\n","stream":"stdout","time":"2021-01-06T13:50:23.647727249Z"}
{"log":"[13:50:23 INF] Request finished in 499.0756ms 200 \n","stream":"stdout","time":"2021-01-06T13:50:23.660094226Z"}
{"log":"[13:50:29 INF] clearing expired overlay for: 254963574\n","stream":"stdout","time":"2021-01-06T13:50:29.44316216Z"}
{"log":"[13:50:36 INF] Application is shutting down...\n","stream":"stdout","time":"2021-01-06T13:50:36.230882576Z"}
 
Last edited:
Does the the heartbeat in your service start as soon as the container is started??
 
Yup, I get that message if I go directly to it in a browser.

Could it be since I'm using http and not https??