azz*_*ack 18 .net c# asp.net-mvc asp.net-web-api attributerouting
我有一个带有名为SlashBaseService的基本ApiController的webapi项目:
[RouteArea("uBase")]
public abstract class SlashBaseService : ApiController
{
}
Run Code Online (Sandbox Code Playgroud)
生成的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 });
Run Code Online (Sandbox Code Playgroud)
我还在一个单独的程序集中有一个testservice:
public class SampleSlashBaseService : SlashBaseService
{
[GET("TestOpenMethod")]
public string GetTestOpenMethod()
{
return "Hello anonymous!";
}
[GET("Echo/{message}")]
public string GetEcho(string message)
{
return message;
}
}
Run Code Online (Sandbox Code Playgroud)
所有非常简单的东西.问题是,当我尝试转到其中一个生成的URL时,我收到以下消息:
未找到与名为"SampleSlashBaseService"的控制器匹配的类型.
来自/routes.axd的路由列表也看起来正确.
azz*_*ack 53
发现了问题.
ApiControllers
类名需要以"Controller"为后缀,而我的不是.改变它来SampleSlashBaseController
解决问题.
注意:可以像我一样用"服务"作为后缀,但是你必须实现IHttpControllerSelector
如下所述的自定义:http://netmvc.blogspot.no/2012/06/aspnet-mvc-4-webapi-支撑区,in.html
归档时间: |
|
查看次数: |
28015 次 |
最近记录: |