As you’ve said HTTPS termination is done at load balancer level (“https is set up at the load balancer level”) which means original scheme may not come to the site depending on loadbalancer configuration.
It looks like in your case LB is configured to talk to site over HTTP all the time. So your site will never see original scheme on HttpContext.Request.RawUrl (or similar properties).
Fix: usually when LB, proxy or CDN configured such way there are additional headers that specify original scheme and likely other incoming request parameters like full url, client’s IP which will be not directly visible to the site behind such proxying device.