public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
在global.asax.cs中的我这样做: WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration); 断点确认路线正在注册。
在App_Data文件夹中,我放置一个文件夹WebApi并放入一个包含以下内容的BlogPosts.cs:
public class BlogPosts : ApiController
{
public string Get()
{
return "Hello World";
}
}
我还需要做些什么才能让网站使用WebAPI?
http://localhost:49396/api/BlogPosts
给了我:
<Error>
<Message>
No HTTP resource was found that matches the request URI 'http://localhost:49396/api/BlogPosts'.
</Message>
<MessageDetail>
No type was found that matches the controller named 'BlogPosts'.
</MessageDetail>
</Error>
因此,WebAPI已被注册正确,但它只是在App_Data文件夹中找不到ApiController。我正确地错过了什么。 (它不是MVC4项目,而是我尝试添加api的网站。)
答案 0 :(得分:2)
App_Data
通常不用于此类场景。很可能你 BlogPosts.cs 文件没有设置为编译,而是内容。因此,在解决方案资源管理器中,单击 BlogPosts.cs ,转到属性并将Build Action
设置更改为编译。
另一个问题是您的BlogPosts
缺少控制器后缀。将您的班级重命名为BlogPostsController
。
如果您创建一个特殊的文件夹来保存Web API控制器,例如 ApiControllers ,那可能会更好。