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}"
);
我在 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}" );