Net Core: как разделить контроллеры по портам? - PullRequest
0 голосов
/ 26 сентября 2018

Мне нужно разделить контроллеры по портам внутри собственной хост-службы netcore2.0.

Пример:

Есть 2 порта (p1 и p2) и 3 контроллера (c1, c2, c3)).Схема требований: c1 обрабатывает запросы от p1, но c2 и c3 будут обрабатывать запросы от p2.

Есть идеи, как мне это сделать?

1 Ответ

0 голосов
/ 28 сентября 2018

Получил ответ на GitHub https://github.com/aspnet/Mvc/issues/8502

[PortActionConstraint(5000)]
public class HomeController : Controller
{
   ...
}

[AttributeUsage(AttributeTargets.Class)]
public class PortActionConstraint : ActionMethodSelectorAttribute
{
    public PortActionConstraint(int port)
    {
        Port = port;
    }

    public int Port { get; }

    public override bool IsValidForRequest(RouteContext routeContext, ActionDescriptor action)
    {
        //external port
        var externalPort = routeContext.HttpContext.Request.Host.Port;
        //local port 
        var localPort = routeContext.HttpContext.Connection.LocalPort;
        //write here your custom logic. for example  
        return Port == localPort ;
    }
}
...