/// <summary> /// Injects logic that takes control of the specified http client. /// </summary> public static SystemHttpClient Control(SystemHttpClient client) { Type baseType = client.GetType().BaseType; if (baseType.FullName != typeof(SystemHttpMessageInvoker).FullName) { return(client); } // If the client is already disposed, do nothing. var disposedField = baseType.GetField("_disposed", BindingFlags.NonPublic | BindingFlags.Instance); if ((bool)disposedField?.GetValue(client)) { return(client); } // Access the message handler and other properties through reflection. var handlerField = baseType.GetField("_handler", BindingFlags.NonPublic | BindingFlags.Instance); var handler = (SystemHttpMessageHandler)handlerField?.GetValue(client); var disposeHandlerField = baseType.GetField("_disposeHandler", BindingFlags.NonPublic | BindingFlags.Instance); var disposeHandler = (bool)disposeHandlerField?.GetValue(client); // Create the controlled client and set the same properties. var controlledClient = new SystemHttpClient(HttpMessageHandler.Create(handler), disposeHandler); controlledClient.BaseAddress = client.BaseAddress; #if NET controlledClient.DefaultVersionPolicy = client.DefaultVersionPolicy; #endif controlledClient.DefaultRequestVersion = client.DefaultRequestVersion; controlledClient.MaxResponseContentBufferSize = client.MaxResponseContentBufferSize; controlledClient.Timeout = client.Timeout; return(controlledClient); }
public async Task <IActionResult> File(string l = "https://www.vvvamersfoort.nl/uploads/cache/extra_small/uploads/media/59fc1b3e41b99/amersfoort31.jpg") { var httpClient = new System.Net.Http.HttpClient(); string location = httpClient.GetType().Assembly.CodeBase; var data = await httpClient.GetStreamAsync(l); return(new FileStreamResult(data, "image/jpg")); }
public async Task<IActionResult> File(string l = "https://www.vvvamersfoort.nl/uploads/cache/medium/uploads/media/5d5d31417914d/dsc-3471.jpg") { var httpClient = new System.Net.Http.HttpClient(); string location = httpClient.GetType().Assembly.CodeBase; System.Console.ForegroundColor = ConsoleColor.Red; System.Console.WriteLine($"System.Net.Http.HttpClient: {location}"); System.Console.ResetColor(); var data = await httpClient.GetStreamAsync(l); return new FileStreamResult(data, "image/jpg"); }