Подмена домена у запроса

127
28 декабря 2020, 08:30

Есть необходимость перенаправлять часть запросов на другой домен без изменений.

Быстро накидал "жёсткий" вариант по своей задаче, т.к. поиск не выдал сразу вразумительного решения.

Подскажите лучший способ реализовать перенаправление запросов в C#.

Код моего варианта:

public class RedirectMiddleware
{
    private readonly RequestDelegate _next;
    private readonly IAppSettings _settings;
    public RedirectMiddleware(
        RequestDelegate next,
        IAppSettings settings)
    {
        _next = next;
        _settings = settings;
    }
    public async Task InvokeAsync(HttpContext context)
    {
        if (context.Request.Path.StartsWithSegments("/api") && HttpMethods.IsPost(context.Request.Method))
        {
            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(_settings.AdapterUrl);
                var enc = context.Request.Headers.TryGetValue("ContentEncoding", out StringValues sv) ? Encoding.GetEncoding(sv.ToArray().First()) : Encoding.UTF8;
                var content = new StringContent(GetDocumentContents(context.Request, enc), enc, "application/json");
                var res = await client.PostAsync(context.Request.Path, content);
                context.Response.StatusCode = (int)res.StatusCode;
                context.Response.ContentType = res.Content.Headers.ContentType.ToString();
                var respContent = await res.Content.ReadAsStringAsync();
                context.Response.ContentLength = respContent.Length;
                await context.Response.WriteAsync(respContent, enc);
            }
        }
        else
        {
            await _next.Invoke(context);
        }
    }
    private string GetDocumentContents(HttpRequest request, Encoding enc)
    {
        string documentContents;
        using (Stream receiveStream = request.Body)
        {
            using (StreamReader readStream = new StreamReader(receiveStream, enc))
            {
                documentContents = readStream.ReadToEnd();
            }
        }
        return documentContents;
    }
}
READ ALSO
Передача с клиента на сервер JSon коллекции

Передача с клиента на сервер JSon коллекции

Проблема состоит в следующем, на клиенте есть функция передачи модели (Model)

112
Ограничение на ввод даты в DataGrid

Ограничение на ввод даты в DataGrid

У меня есть таблица Timetable, которая представлена в виде DataGridВ нем есть столбец "Date"

97
Работа с WebBrowser без Control

Работа с WebBrowser без Control

Почему-то не могу дождаться завершения загрузки веб-страницы, бесконечный циклВ чем моя проблема? Использовал следующий код:

103
unsafe структура с фиксированным массивом структур

unsafe структура с фиксированным массивом структур

Пробую перенести одну из структур с из DXGI, но столкнулся с проблемой

130