В настоящее время я использую приведенный ниже код для программной установки всех моих API-маршрутов, что прекрасно работает.
Чего я хотел бы добиться, так это программно установить 2 маршрута для каждого действия без ручной установки RouteAttribute("MY_ROUTE")
дважды на каждое действие.
Вот как я сейчас устанавливаю маршруты.
public static void Map(ControllerModel model)
{
string templatePrefix = "api/services/app";
...
if (AppStore.Contains(model.ControllerName))
templatePrefix = "api/services/AppStore";
...
foreach (var action in model.Actions)
{
var verb = ProxyScriptingHelper.GetConventionalVerbForMethodName(action.ActionName);
var constraint = new HttpMethodActionConstraint(new List<string> { verb });
foreach (var selector in action.Selectors)
{
selector.ActionConstraints.Add(constraint);
selector.AttributeRouteModel = new AttributeRouteModel(new RouteAttribute($"{templatePrefix.EnsureEndsWith('/')}{action.Controller.ControllerName}/{action.ActionName}"));
}
}
}
Я пробовал AttributeRouteModel.CombineAttributedRouteModel
, но это объединяет строки маршрута, а не то, что я ожидал.
С кодом выше все действия контроллера AppStore
становятся
api/services/AppStore/getApps1
api/services/AppStore/getApps2
api/services/AppStore/getApps3
Я бы хотел получить следующие результаты:
api/services/app/getApps1
api/services/AppStore/getApps1
api/services/app/getApps2
api/services/AppStore/getApps2
api/services/app/getApps3
api/services/AppStore/getApps3