我正在考虑拥有一个使用通用存储库的基本控制器来为我的 API 控制器提供基本 CRUD 方法的想法,这样我就不必在每个新控制器中复制相同的基本代码。但是当路由属性在基本控制器中时,我遇到了识别路由属性的问题。为了准确显示我遇到的问题,我创建了一个非常简单的 WebAPI 控制器。
当我Get
在主控制器中有一个方法并且它ApiController
直接继承自控制器时,我没有任何问题,并且可以按预期工作。
[RoutePrefix("admin/test")]
public class TestController : ApiController
{
[Route("{id:int:min(1)}")]
public string Get(int id)
{
return "Success";
}
}
当我将该Get
方法移动到基本控制器中时,它会返回 404 页面的内容。
[RoutePrefix("admin/test")]
public class TestController : TestBaseController
{
}
public class TestBaseController : ApiController
{
[Route("{id:int:min(1)}")]
public string Get(int id)
{
return "Success";
}
}
一些更有趣的注释:
我可以在 访问操作
GET
/Test/1
。所以它仍然根据默认路由找到它。当我尝试访问
POST
/admin/test
时,它返回以下 JSON{ "Message":"未找到与请求 URI ' http://test.com/admin/test '匹配的 HTTP 资源。", "MessageDetail":"未找到与名为 'admin' 的控制器匹配的类型。 " }
有谁知道让路由与基本控制器的属性一起使用的方法?