找不到匹配控制器的类型

时间:2014-11-06 16:42:59

标签: c# asp.net-web-api

我正在使用网络API构建我的第一个应用,我偶然发现了一个无法找到相关信息的问题。

使用样本控制器测试其是否正常工作:

public class TestController : ApiController
{
    // GET api/test
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }
}

WebApiConfig.cs:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );
}

每次我尝试使用http://localhost:59502/api/test来调用服务时 我正在

<Error>
  <Message>
    No HTTP resource was found that matches the request URI 'http://localhost:59502/api/test'.
  </Message>
  <MessageDetail>
    No type was found that matches the controller named 'test'.
  </MessageDetail>
</Error>

有人可以指出我做错了什么吗?

3 个答案:

答案 0 :(得分:1)

要确定要调用的操作,框架使用路由表。 Web API的Visual Studio项目模板创建了一个默认路由:

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

使用默认路由模板,Web API使用HTTP方法选择操作。但是,您也可以创建一个路径,其中操作名称包含在URI中:

routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

这样您就可以访问您的网址......... / api / test

答案 1 :(得分:0)

我实际上已经解决了这个问题 - 通过创建新项目,并复制所有类。 现在一切都很完美。

&#34;您是否尝试过将其关闭再打开?&#34;哦,好吧..

答案 2 :(得分:0)

我的问题是我没有在文件名中添加“ Controller”后缀(复制了另一个控制器并重命名了)

只需在文件名和类名的末尾添加Controller。