sch*_*han 5 kestrel-http-server asp.net-core
Kestrel 有没有办法监听 2 个端口,例如 80 和 81,并为每个端口指定不同的控制器?
我的情况是有 2 个控制器,一个用于需要基于令牌的身份验证的最终用户请求,另一个控制器用于基于机器的代理,我想在其中强制执行基于客户端证书的身份验证。
Nev*_*ane -1
我仍然觉得设置两个单独的应用程序会更干净且更易于管理。您始终可以分离出您需要的任何内容(例如,在您的情况下,您可以设置不同的身份验证),并且可以在它们之间共享任何类型的代码,包括控制器、服务和中间件。
但是,如果您想将其放在同一个应用程序中,您可以尝试使用中间件。据我所知,MVC 中间件主要只提供对路由的访问,而不是端口的访问。UseMvc但是,您可以在重置路径之前添加中间件。像这样的东西:
app.Use(async (context, next) => {
if (context.Connection.LocalPort == 80)
context.Request.Path = "/ports/80" + context.Request.Path.Value;
await next();
});
Run Code Online (Sandbox Code Playgroud)
执行此操作后,您可以查看区域来组织控制器以进行路由。https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/areas。您必须确保所有端口都具有此映射,以确保最终用户无法对此类路径进行硬编码。
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |