C# .net OWIN - 使用通配符动态启动 WebAPI 的路由 URL

C# .net OWIN - starting a route for a WebAPI with a Wildcard dynamic URL

我在 OWIN 中托管了一个 WebApi,我想知道是否可以将 URL 的开头设为 "wildcard",例如,如果我有一个名为 [=23] 的 WebAPI =],访问我的 WebAPI 的人将能够键入:

http://localhost/blah-blah-blah/api/GetUsers

http://localhost/api/GetUsers

http://localhost/ABC/api/GetUsers

并且所有路由都会将他带到 GetUsers。这可能吗?我尝试了向函数添加 [Route("{*uri}/api/GetUsers")] 之类的东西,但它似乎不起作用,在 WebAPIConfig ->

中尝试了相同的方法
config.Routes.MapHttpRoute(
    name: "ControllerAndAction", 
    routeTemplate: "{*uri}/api/{controller}/{action}"
); 

但效果不佳。

有什么方法可以创建带有 "wildcard starting URL" 的 WebAPI,还是不可能?

请勿在建议的路线模板中使用 *。它会引起冲突。 {prefix}/api/{controller}/{action} 应该适用于您的第一个和第三个选项。路由模板中间不允许使用可选占位符,因此您必须单独注册 api/{controller}/{action}

config.Routes.MapHttpRoute(
    name: "PrefixedControllerAndAction", 
    routeTemplate: "{prefix}/api/{controller}/{action}"
); 

config.Routes.MapHttpRoute(
    name: "ControllerAndAction", 
    routeTemplate: "api/{controller}/{action}"
);

config.Routes.MapHttpRoute( 姓名:"ControllerAndAction", routeTemplate: "{*uri}/api/{controller}/{action}" );