Как заменить хост перед окончательным вызовом промежуточного программного обеспечения в Ocelot? - PullRequest
0 голосов
/ 19 июня 2020

Представляя новый шлюз, который будет ссылаться на существующую реализацию Ocelot, эта существующая реализация ocelot имеет специальный вызов промежуточного программного обеспечения в OcelotPipelineExtensions.cs, который редактирует хост на основе определенных c правил, как здесь:

    //custom code - route to specific host
    builder.UseDownstreamHostFinderMiddleware();

    // Not sure if this is the best place for this but we use the downstream url
    // as the basis for our cache key.
    builder.UseOutputCacheMiddleware();

    //We fire off the request and set the response on the scoped data repo
    builder.UseHttpRequesterMiddleware();

    return builder.Build();`

Моя проблема в том, что я хочу вызвать другое промежуточное ПО после этого настраиваемого без фактического редактирования проекта Ocelot (используемого другой командой и пытающегося не вносить никаких изменений, которые приводят к дополнительному тестированию), в данном случае, в частности, OcelotPipelineExtensions.cs. Я пытаюсь добиться того, чтобы я мог поместить в свой шлюз только logi c, который будет вызывать дополнительное промежуточное ПО перед окончательным вызовом builder.UseHttpRequesterMiddleware () ;. Я пробовал следующее, используя внедрение и переопределения промежуточного программного обеспечения:

     var configuration = new OcelotPipelineConfiguration
     {

        PreQueryStringBuilderMiddleware = async (ctx, next) =>
        {
            ctx.DownstreamRequest.Host = "MyOverRiddenHost";
            await next.Invoke();
        }
    };`

Но моя проблема со всеми переопределениями, которые я пробовал, заключается в том, что все они вызываются перед пользовательским промежуточным программным обеспечением, которое устанавливает для хоста что-то еще. Есть ли способ с уровня шлюза без редактирования проекта Ocelot вставить пользовательское промежуточное ПО / переопределение, а также определить порядок (в этом случае запускать непосредственно перед последним промежуточным ПО).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...