OpenALPR Webhook Processor for IP Cameras

Well, I'm not sure this will ever finish

Current db size is 1.44GB, size when I started was 1.30GB. So we've done a 140MB in almost 6 hours

Given over 100GB of plates, I'm in trouble!

CPU isn't really even being used. I wonder if the limitation could be on the Rekor Scout side?

1641858750790.png
 
Here is a snippet of the log. Is that HTTP GET for the scrape? Looks like thats 120 seconds to respond!

 
Awesome project. Will likely contribute if you're open to PRs (and reading through the thread, it sounds like you are)! :)

Few questions:
1) If you run the Rekor web server locally, are you able to run this without opening any ports to the outside world?
2) The latest agent config software [local/desktop Windows] has 4 'destination' options -- including what I assume is 'direct' [LAN] access to the data in the Beanstalkd queues. Is there any reason not to use this instead of the webhook? Both for performance, speed, and in the interest of keeping everything local. Or is that option not available for the cheap $5/mo plans, maybe? [I'm on commercial trial atm].
3) Is there any data that is added/augmented [by Rekor] after local computation, on their server? Or is everything happening locally, their agent ships to their server, and then you're grabbing from there?

Bonus:
It took me a bit to get things setup -- some of the posts here reference old UIs/options & I didn't stumble on the GH wiki til I nearly had it all working. I had attempted to 'scrape' several times before I had a working config. Now when I hit scrape, I see the 'toast' message saying scraping started, and then it's immediately followed by a 'scrape finished'. Logs show the epoch it searched. I definitely have data (both local & remote [on Rekor's dashboard]) that didn't get imported, though. Is it date-range matching, and my "oldest scrape time" is making it fail to see older stuff? If so, where is that value stored/how can I reset it -- else, any thoughts on what might be causing the issue? New plate scans are coming in & no errors in log after running scrape; all is configured including my cameras & matching IDs, etc...

Awesome stuff. Very curious about #1 & #2 above -- if #2 is an option on the $5/mo plans then I'd likely volunteer to write the code to have "poll Beanstalkd queue/tubes" to parse the data directly via LAN -- though if that's not an option for $5/mo plan users then it's probably not as useful to add.

Thank you!
 
If you run the web server locally you don't need any ports. Most users are using the cloud version though, so they need the ports open.
I have never tried reading from beanstalkd directly, you are more than welcome to try.
 
Anyone noticing performance issues with large plate counts? I'm at around 242,000 plates, and lately the statistics are taking around 15 seconds to show a lot of the time, some faster, some slower. I'm wondering if I could be starting to get to the point where I have too many entries?

Running in Docker on Debian, dedicated VM for this. 8 Cores of an E5-2680 V2, 2GB RAM, all NVMe storage, 10G Networking. CPU load doesn't really seem high at all when loading plates, and memory is sitting at just 800MB used of 2GB
 
I noticed this also, having all of the possible plate numbers for each group in a single string is having performance problems once enough plates get into the database.

Try out v4.2.2-alpha6 with optimizations for this. You need to back up your processor.db file beforehand, this release has an irreversible database migration to increase performance. It might be a few minutes before the application will be functional once it starts, the migration takes a while. Monitor the logs and CPU usage to tell when it's finished.
 
Last edited:
Awesome, thanks!

Will latest get it, or do I need to specify v4.2.2-alpha6?
 
Woweeee, this is FAST now

Didn't really take any time for it to be functional, must have been super fast
 
go to v4.2.2-alpha8 this fixes an issue where lots of incoming plates cause the browser to constantly refresh the list and fixes an issue with processing alerts
 
Thanks I'm on it, never had enough cars to cause the other issue that I noticed

Is there a similar tweak that could make the main page load quicker? I've noticed as more and more plates go in, the slower it goes
 
When doing scrapes, are plate images still being pulled or is there a way to "opt out"? I stopped scrapping because I didn't want to have duplicates of plates (Rekor and your program). Too much drive space needed.
 
i could add a default date/time filter of 1 month, currently the pagination counts the total amount of plates that apply with the current filters applied. if i set the timeframe to 1 month it returns much faster.
 
v4.2.2-alpha14 sets the default date range to 15 days, which should speed up the list query.
 
v4.2.2 is released with searching optimizations.
  • default filter date is now 15 days in the past to increase searching speed by not reading entire database.
  • database optimizations with possible matches for increased searching speed.
  • fixed some edge cases with lots of vehicle being recorded causing the UI to refresh too much.
  • cancel ongoing searches when a new search is triggered.
 
  • Like
Reactions: CamCrazy and biggen
I'm installing fresh on a new machine and I can't seem to add a camera anymore. I hit the "add camera" button, plug in my stuff, but the camera never gets added and the "add camera" button dissapears. Have to delete the .db and start over by hand in order to get the "add camera" to reappear.

Code:
2022-03-04 12:34:25.952 +00:00 [INF] HTTP GET /cameras responded 200 in 1.0992 ms
2022-03-04 12:34:25.952 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:34:25.950 +00:00 [ERR] An unhandled exception has occurred while executing the request.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:34:25.948 +00:00 [ERR] HTTP GET /cameras responded 500 in 4.2159 ms
2022-03-04 12:34:25.947 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:34:25.946 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:25.946 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:34:25.945 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:25.944 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:25.063 +00:00 [INF] HTTP GET /settings/ignores responded 200 in 14.3648 ms
2022-03-04 12:34:25.063 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Settings.SettingsController.GetIgnores (OpenAlprWebhookProcessor)'
2022-03-04 12:34:25.062 +00:00 [INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[OpenAlprWebhookProcessor.Settings.Ignore, OpenAlprWebhookProcessor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
2022-03-04 12:34:25.059 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:25.052 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Settings.SettingsController.GetIgnores (OpenAlprWebhookProcessor)'
2022-03-04 12:34:25.052 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:25.050 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.636 +00:00 [INF] HTTP GET /alerts responded 200 in 15.2868 ms
2022-03-04 12:34:24.636 +00:00 [INF] HTTP GET /alerts/pushover responded 200 in 14.6071 ms
2022-03-04 12:34:24.636 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Alerts.AlertsController.GetAlerts (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.636 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Alerts.AlertsController.GetPushover (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.635 +00:00 [INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[OpenAlprWebhookProcessor.Alerts.Alert, OpenAlprWebhookProcessor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]'.
2022-03-04 12:34:24.633 +00:00 [INF] Executing ObjectResult, writing value of type 'OpenAlprWebhookProcessor.Alerts.Pushover.PushoverRequest'.
2022-03-04 12:34:24.632 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.629 +00:00 [WRN] The query uses the 'First'/'FirstOrDefault' operator without 'OrderBy' and filter operators. This may lead to unpredictable results.
2022-03-04 12:34:24.628 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.624 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Alerts.AlertsController.GetPushover (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.624 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:24.623 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Alerts.AlertsController.GetAlerts (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.623 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:24.622 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.622 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.039 +00:00 [INF] HTTP GET /settings/agent responded 200 in 16.9407 ms
2022-03-04 12:34:24.038 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Settings.SettingsController.GetAgent (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.032 +00:00 [INF] Executing ObjectResult, writing value of type 'OpenAlprWebhookProcessor.Settings.Agent'.
2022-03-04 12:34:24.031 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:24.024 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Settings.SettingsController.GetAgent (OpenAlprWebhookProcessor)'
2022-03-04 12:34:24.024 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:24.022 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:23.444 +00:00 [INF] HTTP GET /cameras responded 200 in 2.8130 ms
2022-03-04 12:34:23.443 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:34:23.440 +00:00 [ERR] An unhandled exception has occurred while executing the request.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:34:23.439 +00:00 [ERR] HTTP GET /cameras responded 500 in 10.3407 ms
2022-03-04 12:34:23.438 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:34:23.435 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:23.434 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:34:23.431 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:23.429 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:20.643 +00:00 [INF] HTTP GET /licenseplates/counts responded 200 in 6.1027 ms
2022-03-04 12:34:20.643 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.LicensePlates.LicensePlatesController.GetLicensePlateCounts (OpenAlprWebhookProcessor)'
2022-03-04 12:34:20.643 +00:00 [INF] Executing ObjectResult, writing value of type 'OpenAlprWebhookProcessor.LicensePlates.GetLicensePlateCounts.GetLicensePlateCountsResponse'.
2022-03-04 12:34:20.642 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:20.641 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.LicensePlates.LicensePlatesController.GetLicensePlateCounts (OpenAlprWebhookProcessor)'
2022-03-04 12:34:20.641 +00:00 [INF] Successfully validated the token.
2022-03-04 12:34:20.639 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:20.624 +00:00 [INF] HTTP POST /users/authenticate responded 200 in 6.3059 ms
2022-03-04 12:34:20.624 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.Authenticate (OpenAlprWebhookProcessor)'
2022-03-04 12:34:20.623 +00:00 [INF] Executing OkObjectResult, writing value of type 'OpenAlprWebhookProcessor.Users.AuthenticateResponse'.
2022-03-04 12:34:20.619 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:20.618 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.Authenticate (OpenAlprWebhookProcessor)'
2022-03-04 12:34:20.618 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:34:19.343 +00:00 [INF] HTTP GET /users/canregister responded 200 in 2.8980 ms
2022-03-04 12:34:19.343 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.CanRegister (OpenAlprWebhookProcessor)'
2022-03-04 12:34:19.342 +00:00 [INF] Executing ObjectResult, writing value of type 'System.Boolean'.
2022-03-04 12:34:19.341 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:19.341 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.CanRegister (OpenAlprWebhookProcessor)'
2022-03-04 12:34:19.331 +00:00 [INF] HTTP GET /5.10524713e9e70943cd1a.js responded 200 in 0.4303 ms
2022-03-04 12:34:19.331 +00:00 [INF] Sending file. Request path: '/5.10524713e9e70943cd1a.js'. Physical path: '/app/ClientApp/dist/5.10524713e9e70943cd1a.js'
2022-03-04 12:34:19.330 +00:00 [INF] HTTP POST /users/revoke-token responded 401 in 2.3755 ms
2022-03-04 12:34:19.330 +00:00 [INF] AuthenticationScheme: Bearer was challenged.
DenyAnonymousAuthorizationRequirement: Requires an authenticated user.
2022-03-04 12:34:19.330 +00:00 [INF] Authorization failed. These requirements were not met:
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
2022-03-04 12:34:19.330 +00:00 [INF] Bearer was not authenticated. Failure message: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
2022-03-04 12:34:19.329 +00:00 [INF] Failed to validate the token.
2022-03-04 12:34:19.329 +00:00 [WRN] attempted login failed
2022-03-04 12:34:19.328 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:19.328 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:34:19.300 +00:00 [INF] HTTP GET /cameras responded 401 in 2.7913 ms
2022-03-04 12:34:19.300 +00:00 [INF] AuthenticationScheme: Bearer was challenged.
DenyAnonymousAuthorizationRequirement: Requires an authenticated user.
2022-03-04 12:34:19.300 +00:00 [INF] Authorization failed. These requirements were not met:
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
2022-03-04 12:34:19.299 +00:00 [INF] Bearer was not authenticated. Failure message: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
2022-03-04 12:34:19.299 +00:00 [INF] Failed to validate the token.
2022-03-04 12:34:19.299 +00:00 [WRN] attempted login failed
2022-03-04 12:34:19.298 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:11.961 +00:00 [INF] Executing endpoint '/processorhub'
2022-03-04 12:34:11.960 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:34:11.951 +00:00 [INF] HTTP GET /7.5842edad7d4f84106311.js responded 200 in 1.0371 ms
2022-03-04 12:34:11.950 +00:00 [INF] HTTP GET /1.84bcb660b45afe9ef7c2.js responded 200 in 0.5581 ms
2022-03-04 12:34:11.950 +00:00 [INF] Sending file. Request path: '/7.5842edad7d4f84106311.js'. Physical path: '/app/ClientApp/dist/7.5842edad7d4f84106311.js'
2022-03-04 12:34:11.950 +00:00 [INF] Sending file. Request path: '/1.84bcb660b45afe9ef7c2.js'. Physical path: '/app/ClientApp/dist/1.84bcb660b45afe9ef7c2.js'
2022-03-04 12:34:11.945 +00:00 [INF] HTTP POST /processorhub/negotiate?negotiateVersion=1 responded 200 in 2.2470 ms
2022-03-04 12:34:11.945 +00:00 [INF] Executed endpoint '/processorhub/negotiate'
2022-03-04 12:34:11.945 +00:00 [INF] Executing endpoint '/processorhub/negotiate'
2022-03-04 12:34:11.944 +00:00 [INF] HTTP GET /favicon.ico responded 200 in 0.6549 ms
2022-03-04 12:34:11.943 +00:00 [INF] Sending file. Request path: '/favicon.ico'. Physical path: '/app/wwwroot/favicon.ico'
2022-03-04 12:34:11.943 +00:00 [INF] CORS policy execution successful.
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.HandleException(HttpContext context, ExceptionDispatchInfo edi)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__0(HttpContext context, Func`1 next)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.<Use>b__2()
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__1(HttpContext context, Func`1 next)

Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
2022-03-04 12:34:11.912 +00:00 [ERR] An exception was thrown attempting to execute the error handler.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__0(HttpContext context, Func`1 next)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_2.<Use>b__2()
   at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Builder.UseExtensions.<>c__DisplayClass0_1.<Use>b__1(HttpContext context)
   at Microsoft.AspNetCore.SpaServices.SpaDefaultPageMiddleware.<>c__DisplayClass0_0.<Attach>b__1(HttpContext context, Func`1 next)

Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
2022-03-04 12:34:11.911 +00:00 [ERR] HTTP POST /users/refresh-token responded 500 in 1.4528 ms
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
2022-03-04 12:34:11.911 +00:00 [INF] Bearer was not authenticated. Failure message: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
2022-03-04 12:34:11.910 +00:00 [WRN] attempted login failed
2022-03-04 12:34:11.910 +00:00 [INF] CORS policy execution successful.
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at OpenAlprWebhookProcessor.Users.UsersController.RefreshToken(CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/Users/UsersController.cs:line 52
   at OpenAlprWebhookProcessor.Users.UserService.RefreshTokenAsync(String token, String ipAddress, CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/Users/UserService.cs:line 184
System.ArgumentException: unknown user
2022-03-04 12:34:11.908 +00:00 [ERR] An unhandled exception has occurred while executing the request.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at OpenAlprWebhookProcessor.Users.UsersController.RefreshToken(CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/Users/UsersController.cs:line 52
   at OpenAlprWebhookProcessor.Users.UserService.RefreshTokenAsync(String token, String ipAddress, CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/Users/UserService.cs:line 184
System.ArgumentException: unknown user
2022-03-04 12:34:11.905 +00:00 [ERR] HTTP POST /users/refresh-token responded 500 in 7.7551 ms
2022-03-04 12:34:11.904 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:34:11.900 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
2022-03-04 12:34:11.900 +00:00 [INF] Bearer was not authenticated. Failure message: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
   at Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler.HandleAuthenticateAsync()
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateToken(String token, TokenValidationParameters validationParameters, SecurityToken& validatedToken)
   at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(String token, TokenValidationParameters validationParameters)
token: 'System.IdentityModel.Tokens.Jwt.JwtSecurityToken'.
 'System.Text.StringBuilder'.
Exceptions caught:
Microsoft.IdentityModel.Tokens.SecurityTokenSignatureKeyNotFoundException: IDX10503: Signature validation failed. Token does not have a kid. Keys tried: 'System.Text.StringBuilder'.
2022-03-04 12:34:11.899 +00:00 [INF] Failed to validate the token.
2022-03-04 12:34:11.899 +00:00 [WRN] attempted login failed
2022-03-04 12:34:11.898 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:34:11.897 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:34:11.800 +00:00 [INF] HTTP GET /main.9c88704e3f2a4d18ef08.js responded 200 in 8.5756 ms
2022-03-04 12:34:11.800 +00:00 [INF] Sending file. Request path: '/main.9c88704e3f2a4d18ef08.js'. Physical path: '/app/ClientApp/dist/main.9c88704e3f2a4d18ef08.js'
2022-03-04 12:34:11.788 +00:00 [INF] HTTP GET /polyfills.a88c71f8c22a8253ff66.js responded 200 in 1.3566 ms
2022-03-04 12:34:11.788 +00:00 [INF] Sending file. Request path: '/polyfills.a88c71f8c22a8253ff66.js'. Physical path: '/app/ClientApp/dist/polyfills.a88c71f8c22a8253ff66.js'
2022-03-04 12:34:11.781 +00:00 [INF] HTTP GET /runtime.247ede6ef8c2436ecc16.js responded 200 in 0.7970 ms
2022-03-04 12:34:11.780 +00:00 [INF] Sending file. Request path: '/runtime.247ede6ef8c2436ecc16.js'. Physical path: '/app/ClientApp/dist/runtime.247ede6ef8c2436ecc16.js'
2022-03-04 12:34:11.777 +00:00 [INF] HTTP GET /styles.6d268db9d5f0a6c1292b.css responded 200 in 1.4018 ms
2022-03-04 12:34:11.777 +00:00 [INF] Sending file. Request path: '/styles.6d268db9d5f0a6c1292b.css'. Physical path: '/app/ClientApp/dist/styles.6d268db9d5f0a6c1292b.css'
2022-03-04 12:34:11.764 +00:00 [INF] HTTP GET /settings responded 200 in 0.9445 ms
2022-03-04 12:34:11.764 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
2022-03-04 12:33:50.608 +00:00 [INF] Executing endpoint '/processorhub'
2022-03-04 12:33:50.607 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:50.589 +00:00 [INF] HTTP POST /processorhub/negotiate?negotiateVersion=1 responded 200 in 0.7658 ms
2022-03-04 12:33:50.589 +00:00 [INF] Executed endpoint '/processorhub/negotiate'
2022-03-04 12:33:50.589 +00:00 [INF] Executing endpoint '/processorhub/negotiate'
2022-03-04 12:33:50.589 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:50.576 +00:00 [INF] HTTP POST /users/refresh-token responded 200 in 6.7094 ms
2022-03-04 12:33:50.575 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:50.575 +00:00 [INF] Executing OkObjectResult, writing value of type 'OpenAlprWebhookProcessor.Users.AuthenticateResponse'.
2022-03-04 12:33:50.571 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:50.571 +00:00 [INF] Successfully validated the token.
2022-03-04 12:33:50.570 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:50.569 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:49.724 +00:00 [INF] HTTP GET /processorhub?id=8Yd9vlktIK6GURkguaSrfA responded 101 in 26090.0849 ms
2022-03-04 12:33:49.723 +00:00 [INF] Executed endpoint '/processorhub'
2022-03-04 12:33:49.717 +00:00 [INF] HTTP GET /settings responded 200 in 0.9358 ms
2022-03-04 12:33:49.717 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
2022-03-04 12:33:48.402 +00:00 [INF] HTTP GET /cameras responded 200 in 2.5392 ms
2022-03-04 12:33:48.402 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 42
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:33:48.397 +00:00 [ERR] An unhandled exception has occurred while executing the request.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 42
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.Policy.AuthorizationMiddlewareResultHandler.HandleAsync(RequestDelegate next, HttpContext context, AuthorizationPolicy policy, PolicyAuthorizationResult authorizeResult)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method304(Closure , Object )
   at OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras() in /src/OpenAlprWebhookProcessor/Cameras/CameraController.cs:line 47
   at OpenAlprWebhookProcessor.Cameras.GetCameraRequestHandler.HandleAsync() in /src/OpenAlprWebhookProcessor/Cameras/GetCameras/GetCameraRequestHandler.cs:line 42
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-04 12:33:48.394 +00:00 [ERR] HTTP GET /cameras responded 500 in 5.8229 ms
2022-03-04 12:33:48.393 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:33:48.391 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:48.391 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Cameras.CameraController.GetCameras (OpenAlprWebhookProcessor)'
2022-03-04 12:33:48.391 +00:00 [INF] Successfully validated the token.
2022-03-04 12:33:48.389 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:25.922 +00:00 [INF] HTTP GET /logs responded 200 in 26.2914 ms
2022-03-04 12:33:25.922 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.SystemLogs.LogsController.GetLogs (OpenAlprWebhookProcessor)'
2022-03-04 12:33:25.920 +00:00 [INF] Executing ObjectResult, writing value of type 'System.Collections.Generic.List`1[[System.String, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]]'.
2022-03-04 12:33:25.898 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.SystemLogs.LogsController.GetLogs (OpenAlprWebhookProcessor)'
2022-03-04 12:33:25.898 +00:00 [INF] Successfully validated the token.
2022-03-04 12:33:25.896 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:23.634 +00:00 [INF] Executing endpoint '/processorhub'
2022-03-04 12:33:23.634 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:23.616 +00:00 [INF] HTTP POST /processorhub/negotiate?negotiateVersion=1 responded 200 in 0.8332 ms
2022-03-04 12:33:23.616 +00:00 [INF] Executed endpoint '/processorhub/negotiate'
2022-03-04 12:33:23.616 +00:00 [INF] Executing endpoint '/processorhub/negotiate'
2022-03-04 12:33:23.615 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:23.604 +00:00 [INF] HTTP POST /users/refresh-token responded 200 in 6.1756 ms
2022-03-04 12:33:23.604 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:23.603 +00:00 [INF] Executing OkObjectResult, writing value of type 'OpenAlprWebhookProcessor.Users.AuthenticateResponse'.
2022-03-04 12:33:23.600 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:23.600 +00:00 [INF] Successfully validated the token.
2022-03-04 12:33:23.598 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:23.598 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:23.561 +00:00 [INF] HTTP GET /processorhub?id=BXmyRyoOy9Oz4-uKDvDhsg responded 101 in 1946.4455 ms
2022-03-04 12:33:23.561 +00:00 [INF] Executed endpoint '/processorhub'
2022-03-04 12:33:23.556 +00:00 [INF] HTTP GET /settings responded 200 in 1.1039 ms
2022-03-04 12:33:23.556 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
2022-03-04 12:33:21.615 +00:00 [INF] Executing endpoint '/processorhub'
2022-03-04 12:33:21.614 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:21.597 +00:00 [INF] HTTP POST /processorhub/negotiate?negotiateVersion=1 responded 200 in 1.3118 ms
2022-03-04 12:33:21.597 +00:00 [INF] Executed endpoint '/processorhub/negotiate'
2022-03-04 12:33:21.596 +00:00 [INF] Executing endpoint '/processorhub/negotiate'
2022-03-04 12:33:21.596 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:21.584 +00:00 [INF] HTTP POST /users/refresh-token responded 200 in 12.0964 ms
2022-03-04 12:33:21.584 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:21.584 +00:00 [INF] Executing OkObjectResult, writing value of type 'OpenAlprWebhookProcessor.Users.AuthenticateResponse'.
2022-03-04 12:33:21.574 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.Users.UsersController.RefreshToken (OpenAlprWebhookProcessor)'
2022-03-04 12:33:21.574 +00:00 [INF] Successfully validated the token.
2022-03-04 12:33:21.573 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'UsersContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-04 12:33:21.572 +00:00 [INF] CORS policy execution successful.
2022-03-04 12:33:21.543 +00:00 [INF] HTTP GET /processorhub?id=61L63NG7sobWW9pEIOx5Ig responded 101 in 83511.5034 ms
2022-03-04 12:33:21.542 +00:00 [INF] Executed endpoint '/processorhub'
2022-03-04 12:33:21.525 +00:00 [INF] HTTP GET /settings responded 200 in 2.4137 ms
2022-03-04 12:33:21.525 +00:00 [INF] Sending file. Request path: '/index.html'. Physical path: '/app/ClientApp/dist/index.html'
 
Hm it's working fine for me. can you send me a screenshot of the fields you are populating when you add a new camera? that might have something to do with it.
 
Odd. I'm just hitting "Add Camera" and then inputting the Manufacturer, Model, IP address, username, and password. Leaving everything else blank for now. As soon as I hit "Save", that window goes away and the "Add Camera" with a plus button is still there. However, if I navigate away from the camera page, and try to go back, the page is blank. I can't add a camera and I can't see the camera I added. I have to hand delete all the processor.* files created in my config directory and then restart the service to get everything back to baseline. Tested with both Chrome and Edge.



Screenshot 2022-03-05 11.07.15.png
 
Are these errors normal?

Code:
Your application is running in Production mode, so make sure it has been published, or that you have built your SPA manually. Alternatively you may wish to switch to the Development environment.
System.InvalidOperationException: The SPA default page middleware could not return the default page '/index.html' because it was not found, and no other middleware handled the request.
2022-03-06 00:00:46.520 +00:00 [ERR] HTTP POST /webhook responded 500 in 0.2274 ms
   at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.<Invoke>g__Awaited|6_0(ExceptionHandlerMiddleware middleware, HttpContext context, Task task)
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method252(Closure , Object )
   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post(CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 94
   at OpenAlprWebhookProcessor.WebhookProcessor.GroupWebhookHandler.HandleWebhookAsync(Webhook webhook, Boolean isBulkImport, CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/WebhookProcessor/GroupWebhookHandler.cs:line 54
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-06 00:00:46.518 +00:00 [ERR] An unhandled exception has occurred while executing the request.
   at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext)
   at OpenAlprWebhookProcessor.Users.JwtMiddleware.Invoke(HttpContext context, IUserService userService) in /src/OpenAlprWebhookProcessor/Users/JwtMiddleware.cs:line 43
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
   at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.InvokeFilterPipelineAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextResourceFilter>g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
--- End of stack trace from previous location ---
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
   at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
   at lambda_method252(Closure , Object )
   at OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post(CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/WebhookProcessor/WebhookController.cs:line 94
   at OpenAlprWebhookProcessor.WebhookProcessor.GroupWebhookHandler.HandleWebhookAsync(Webhook webhook, Boolean isBulkImport, CancellationToken cancellationToken) in /src/OpenAlprWebhookProcessor/WebhookProcessor/GroupWebhookHandler.cs:line 54
System.NullReferenceException: Object reference not set to an instance of an object.
2022-03-06 00:00:46.517 +00:00 [ERR] HTTP POST /webhook responded 500 in 5.1326 ms
2022-03-06 00:00:46.517 +00:00 [INF] Executed endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'
2022-03-06 00:00:46.516 +00:00 [INF] Entity Framework Core 6.0.2 initialized 'ProcessorContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite:6.0.2' with options: None
2022-03-06 00:00:46.515 +00:00 [INF] parsing plate group webhook
2022-03-06 00:00:46.515 +00:00 [INF] request received from: ::ffff:10.200.200.19
2022-03-06 00:00:46.512 +00:00 [INF] Executing endpoint 'OpenAlprWebhookProcessor.WebhookProcessor.WebhookController.Post (OpenAlprWebhookProcessor)'
 
@IReallyLikePizza2 If you get a chance, can you spin up a new VM and see if you can start from scratch (no user.db or database.db) and see if you can add a camera? I'm dead in the water here until I can figure this out.