Net Core:如何按端口分隔控制器?
Net Core: how to separate controllers by ports?
我需要在 netcore2.0 自托管网络服务中通过端口分隔控制器。
示例:
有 2 个端口(p1 和 p2)和 3 个控制器(c1、c2、c3)。
需求方案:c1处理来自p1的请求,但是c2和c3会处理来自p2的请求。
关于我该怎么做的任何想法?
在 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 ;
}
}
我需要在 netcore2.0 自托管网络服务中通过端口分隔控制器。
示例:
有 2 个端口(p1 和 p2)和 3 个控制器(c1、c2、c3)。 需求方案:c1处理来自p1的请求,但是c2和c3会处理来自p2的请求。
关于我该怎么做的任何想法?
在 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 ;
}
}