/// <summary> /// Executes the middleware action. /// </summary> /// <param name="httpContext">The current HTTP context.</param> /// <param name="networkManager">The network manager.</param> /// <returns>The async task.</returns> public async Task Invoke(HttpContext httpContext, INetworkManager networkManager) { if (httpContext.IsLocal()) { // Running locally. await _next(httpContext).ConfigureAwait(false); return; } var remoteIp = httpContext.Connection.RemoteIpAddress ?? IPAddress.Loopback; if (!networkManager.HasRemoteAccess(remoteIp)) { return; } await _next(httpContext).ConfigureAwait(false); }