更新:我卸载了项目并再次重新执行它并且工作正常。
我试图创建一个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;我在创建之前就已经读过了。此外,那里标记的答案与我在这里的答案类似,我的问题仍然存在。
任何帮助都将受到高度赞赏。我真的输了。
答案 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)
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的控制器或类似的东西。所以我开始寻找真正的问题。就我而言,这是事实,我忘记在控制器类中包含一个公共的无参数构造函数。我添加了它,错误立即消失了。