我有一个名为 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 时,我收到以下消息:
找不到与名为“SampleSlashBaseService”的控制器匹配的类型。
/routes.axd 中的路由列表看起来也正确。