首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将特定控制器映射到特定的Kestrel端点

将特定控制器映射到特定的Kestrel端点
EN

Stack Overflow用户
提问于 2020-11-16 14:12:26
回答 1查看 197关注 0票数 0

能否将特定控制器映射到特定的Kestrel端点?假设有以下端点:

代码语言:javascript
复制
  "Kestrel": {
    "EndpointDefaults": {
      "Protocols_comment": "Host does not support newer protocols",
      "Protocols": "Http1"
    },
    "Endpoints": {
    "localhostHttp": {
        "Url": "http://localhost:5180"
     },
    "localhostHttps": {
        "Url": "https://localhost:5181",
        "Certificate": {
          "Subject": "<certsubject string>",
          "Location": "LocalMachine",
          "AllowInvalid": "false"
        }
      }
    }
  }

主计长:

代码语言:javascript
复制
[Route("api/[controller]")]
    [ApiController]
    public class PushBackWsController : Controller
{
// ...
}

是否可以仅依赖于PushBackWsController或Startup.cs / Program.cs中的配置将localhostHttps控制器映射到localhostHttps端点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-20 15:28:33

根据官方定义,它不能指定某个控制器。但是您可以通过中间件确定协议,然后确定要映射的路由模板。

代码语言:javascript
复制
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        //...
        app.Use(async (context,next)=>
        {
            var schema=context.Request.Scheme;
            if (schema == "https")
            {
                app.Map("/map",
                    (IApplicationBuilder app2) =>
                    {
                        app2.Run(async context =>
                        {
                             context.Response.Redirect("/home/get");
                        });
                    }
                );
            }
            await next();
        });
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(
                name: "default",
                pattern: "{controller=Home}/{action=Index}/{id?}");
        });
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64859614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档