public async Task Invoke(HttpContext context) { SetRequestId(context.Request); _hostNameProvider.Synchronize(context.Request); var sw = new Stopwatch(); sw.Start(); var request = context.Request; var details = new JObject { { "requestId", request.GetRequestId() }, { "method", request.Method.ToString() }, { "uri", request.Path.ToString() } }; var logData = new Dictionary <string, object> { [ScriptConstants.LogPropertyActivityIdKey] = request.GetRequestId() }; _logger.Log(LogLevel.Information, 0, logData, null, (s, e) => $"Executing HTTP request: {details}"); await _next.Invoke(context); sw.Stop(); details["identities"] = GetIdentities(context); details["status"] = context.Response.StatusCode; details["duration"] = sw.ElapsedMilliseconds; _logger.Log(LogLevel.Information, 0, logData, null, (s, e) => $"Executed HTTP request: {details}"); }
public void Synchronize_UpdatesValue() { _mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteHostName)).Returns((string)null); _mockEnvironment.Setup(p => p.GetEnvironmentVariable(EnvironmentSettingNames.AzureWebsiteName)).Returns((string)null); Assert.Equal(null, _hostNameProvider.Value); // no header present HttpRequest request = new DefaultHttpContext().Request; _hostNameProvider.Synchronize(request, _logger); Assert.Equal(null, _hostNameProvider.Value); // empty header value request = new DefaultHttpContext().Request; request.Headers.Add(ScriptConstants.AntaresDefaultHostNameHeader, string.Empty); _hostNameProvider.Synchronize(request, _logger); Assert.Equal(null, _hostNameProvider.Value); // host provided via header - expect update request = new DefaultHttpContext().Request; request.Headers.Add(ScriptConstants.AntaresDefaultHostNameHeader, "test.azurewebsites.net"); _hostNameProvider.Synchronize(request, _logger); Assert.Equal("test.azurewebsites.net", _hostNameProvider.Value); var logs = _loggerProvider.GetAllLogMessages(); Assert.Equal(1, logs.Count); Assert.Equal("HostName updated from '(null)' to 'test.azurewebsites.net'", logs[0].FormattedMessage); // no change in header value - no update expected _loggerProvider.ClearAllLogMessages(); _hostNameProvider.Synchronize(request, _logger); Assert.Equal("test.azurewebsites.net", _hostNameProvider.Value); Assert.Equal("test.azurewebsites.net", _hostNameProvider.Value); logs = _loggerProvider.GetAllLogMessages(); Assert.Equal(0, logs.Count); // another change - expect update request = new DefaultHttpContext().Request; request.Headers.Add(ScriptConstants.AntaresDefaultHostNameHeader, "test2.azurewebsites.net"); _hostNameProvider.Synchronize(request, _logger); Assert.Equal("test2.azurewebsites.net", _hostNameProvider.Value); logs = _loggerProvider.GetAllLogMessages(); Assert.Equal(1, logs.Count); Assert.Equal("HostName updated from 'test.azurewebsites.net' to 'test2.azurewebsites.net'", logs[0].FormattedMessage); }
public async Task Invoke(HttpContext context) { _hostNameProvider.Synchronize(context.Request); await _next.Invoke(context); }
public Task Invoke(HttpContext context) { _hostNameProvider.Synchronize(context.Request, _logger); return(_next.Invoke(context)); }