我在AreaRegistration中映射了以下路线:
public override void RegisterArea(AreaRegistrationContext context)
{
if (context != null)
{
context.Routes.MapHttpRoute(
name: "API_Default",
routeTemplate: "Areas/Test/AIO/api/{controller}/{id}",
defaults: new
{
id = RouteParameter.Optional
});
当我查看Global.asax文件时,我可以看到HttpRoute正在注册,并在RouteTable.Routes中列为{System.Web.Http.WebHost.Routing.HttpWebRoute}。
问题是,当我转到网址... https://myRoot/Areas/Test/AIO/api/AioApi/test
或https://myRoot/Areas/Test/AIO/api/AioApi
时,它会给我500个内部服务器错误。
我不确定如何查看实际错误,在单步执行代码后,在它离开Application_BeginRequest后看不到任何内容。
我的控制器代码:
public class AioApiController : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
有关为什么我无法点击API控制器的任何见解?我可以在相同的上下文中点击我的常规MVC控制器。
非常感谢任何帮助!
答案 0 :(得分:0)
我在WebApi中发现的一件事是有两个Route集合:System.Web.Routing.RouteCollection
和System.Web.Http.HttpRouteCollection
。我相信(但不记得)你需要使用后者才能使你的ApiController
推导正常工作(幸运的是语法是相同的)。