能否将特定控制器映射到特定的Kestrel端点?假设有以下端点:
"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"
}
}
}
}主计长:
[Route("api/[controller]")]
[ApiController]
public class PushBackWsController : Controller
{
// ...
}是否可以仅依赖于PushBackWsController或Startup.cs / Program.cs中的配置将localhostHttps控制器映射到localhostHttps端点?
发布于 2020-11-20 15:28:33
根据官方定义,它不能指定某个控制器。但是您可以通过中间件确定协议,然后确定要映射的路由模板。
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?}");
});
}https://stackoverflow.com/questions/64859614
复制相似问题