ASP.NET Core Endpoint:如何将所有请求路由至/api/ShibAuth?
全局请求重定向解决方案
原来的代码仅匹配根路径的GET请求,要实现所有请求(任意路径、任意HTTP方法)都重定向到/api/ShibAuth,可以用以下两种方式:
方式一:使用兜底路由(推荐)
MapFallback会匹配所有未被其他路由规则处理的请求,适合作为全局兜底重定向:
endpoints.MapFallback(async context => { context.Response.Redirect("/api/ShibAuth"); });
方式二:匹配所有路径与HTTP方法
如果需要强制拦截所有请求(包括已被其他路由匹配的),可以使用通配符路由并指定所有HTTP方法:
endpoints.Map("{**path}", async context => { context.Response.Redirect("/api/ShibAuth"); }).WithMetadata(new HttpMethodMetadata(new[] { "GET", "POST", "PUT", "DELETE", "PATCH" }));
说明
{**path}中的**是递归通配符,能匹配任意层级的URL路径(比如/abc、/abc/def/ghi等)。WithMetadata用于指定该路由支持所有常见HTTP方法,避免只拦截GET请求的问题。
内容的提问来源于stack exchange,提问作者Mr. B-B
相关产品推荐
相关产品推荐

