SlashBaseService という名前のベース ApiController を持つ webapi プロジェクトがあります。
[RouteArea("uBase")]
public abstract class SlashBaseService : ApiController
{
}
結果の dll は WebForms プロジェクトで使用されるため、ルートを生成する次のコードを含む WebActivator クラスもあります。
RouteTable.Routes.MapHttpAttributeRoutes(config =>
{
// Get all services inheriting from SlashBaseService
foreach (var assembly in AppDomain.CurrentDomain.GetAssemblies())
{
foreach (var type in assembly.GetTypes())
{
if (type.IsSubclassOf(typeof(SlashBaseService)))
{
// Scan assembly
config.ScanAssembly(assembly);
// Skip the remaining types in this assembly
break;
}
}
}
});
RouteTable.Routes.MapHttpRoute(
name: "DefaultBase",
routeTemplate: "base/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
別のアセンブリにテストサービスもあります。
public class SampleSlashBaseService : SlashBaseService
{
[GET("TestOpenMethod")]
public string GetTestOpenMethod()
{
return "Hello anonymous!";
}
[GET("Echo/{message}")]
public string GetEcho(string message)
{
return message;
}
}
すべての非常に単純なもの。問題は、これが生成する URL の 1 つにアクセスしようとすると、次のメッセージが表示されることです。
「SampleSlashBaseService」という名前のコントローラーに一致する型が見つかりませんでした。
/routes.axd からのルート リストも正しいようです。