【发布时间】:2015-07-09 12:29:54
【问题描述】:
我最近问了一些关于创建 Web api 的最佳方法的问题,该方法使用与我的主 mvc 站点相同的 url。我推断最好的方法是对我的 MVC 站点进行必要的更改,以包括 web api 和必要的路由。
我主要关注How to add Web API to an existing ASP.NET MVC 4 Web Application project?,但我遇到了问题。代码编译得很好,它显然在寻找路线,但我得到了错误:
未找到与请求 URI 'http://localhost:2242/api/value' 匹配的 HTTP 资源。 找不到与名为“值”的控制器匹配的类型。
我的 WebApiConfig:
class WebApiConfig
{
public static void Register(HttpConfiguration configuration)
{
configuration.Routes.MapHttpRoute("API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
}
}
我的 global.asax:
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
Database.SetInitializer<ApplicationDbContext>(null);
}
}
我的 api 控制器:
public class ValuesController1 : ApiController
{
// GET api/<controller>
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/<controller>/5
public string Get(int id)
{
return "value";
}
// POST api/<controller>
public void Post([FromBody]string value)
{
}
// PUT api/<controller>/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/<controller>/5
public void Delete(int id)
{
}
}
其他帖子证实这是一个正确且有效的设置...我创建了一个单独的 webapi 项目进行比较,这显然是正确的路由。最好将它构建到我的 MVC 网站中,有人有什么想法吗?这张海报No type was found that matches controller 遇到了同样的问题,他找到的解决方案是将所有内容复制到一个新项目中......这真的不是我想做的事情/看看我为什么需要这样做。
【问题讨论】:
-
控制器的名称 (
ValuesController1) 不符合约定 - 为了匹配/api/value,控制器应称为ValueController -
我的上帝......我几乎很抱歉问这个问题我什至没有注意到它的命名。谢谢....工作正常
标签: c# asp.net asp.net-web-api asp.net-mvc-routing