找不到与名为

时间:2015-05-06 14:40:42

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

更新:我卸载了项目并再次重新执行它并且工作正常。

我试图创建一个WebApi,我的构建工作正常,我收到错误消息"没有找到与名为&#34的控制器匹配的类型;当我尝试转到URI时

这就是我的webapiconfig的样子,

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

以下是我的控制器,

public class ClientController : ApiController
{

    public List<Client> Get()
    {
        ICRepository repository = new CRepository(new CContext());

        return repository.GetAllClients().ToList();
    }

这就是我的global.asax.cs文件的样子,

public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        WebApiConfig.Register(GlobalConfiguration.Configuration);
        GlobalConfiguration.Configure(WebApiConfig.Register);
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

我试图浏览网址&#34; http://localhost:50662/api/client&#34;

完整错误如下,

此XML文件似乎没有与之关联的任何样式信息。文档树如下所示。       找不到与请求URI匹配的HTTP资源&#39; http://localhost:50662/api/Client&#39;。找不到与名为&#39;客户端&#39;的控制器匹配的类型。

我的问题与它被标记为重复的问题不同,问题仅使用控制器,即MVC,我的是&#34; ApiController&#34;我在创建之前就已经读过了。此外,那里标记的答案与我在这里的答案类似,我的问题仍然存在。

任何帮助都将受到高度赞赏。我真的输了。

4 个答案:

答案 0 :(得分:2)

我得到了同样的错误:

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

默认情况下,当我在asp.net Web表单应用程序中创建新控制器时,它是这样的:

ValuesController1 : ApiController

我只是简单地删除了&#34; 1&#34;,然后成功:

ValuesController : ApiController

我不知道这是一个错误还是其他什么,但它对我有用。

答案 1 :(得分:0)

你正在两次调用WebApiConfig。

html,body{
  margin:0;
  height:100%;
}
.intro{
  width:400px;
  display:inline-block;
  background:red;
  padding:50px;
}
.intro-header,.intro-text{
  width:100%;
  display:inline-block;
  background:#ccc;
  text-align:center;
  position:relative;
}
.intro-header{
  margin-bottom:50px;
}
.intro-header:after{
  position:absolute;
  left:0;
  content:"";
    width: 0; 
    height: 0; 
    border-left: 400px solid transparent;
    border-top: 20px solid #ccc;  
}
.intro-text:after{
  position:absolute;
  top:-20px;
  left:0;
  content:"";
    width: 0; 
    height: 0; 
    border-right: 400px solid transparent;
    border-bottom: 20px solid #ccc;  
}

删除其中一个。如果您使用的是Web Api版本&gt; = 2.0,则删除第一个,否则删除第二个。

修改1

我认为您的问题可能类似于此Answer

您可能缺少某些参考库,可能与您的控制器或API没有直接关系,但Web Api找到Controller的方式是,它会遍历应用程序引用的所有程序集并搜索与谓词匹配的类型。 / p>

答案 2 :(得分:0)

虽然这不是问题的原因,但实际上是通过Visual Studios上下文菜单而不是Controller添加类型类的新项目引起的。

生成的文件具有以下结构:

GA1.2.1054613344.1468150257

我将类扩展为继承自ApiController,但忘记将其标记为 class foo { }

这是正确的版本:

public

答案 3 :(得分:0)

现在,我面临着一个非常相似的问题。我的错误消息是No type was found that matches the controller named 'odata'。对我来说似乎真的很奇怪,它似乎正在寻找一个名为ODataController的控制器或类似的东西。所以我开始寻找真正的问题。就我而言,这是事实,我忘记在控制器类中包含一个公共的无参数构造函数。我添加了它,错误立即消失了。