Web API未在App_Data文件夹中找到我的控制器

时间:2013-06-25 17:03:19

标签: asp.net-web-api

    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的网站。)

1 个答案:

答案 0 :(得分:2)

App_Data通常不用于此类场景。很可能你 BlogPosts.cs 文件没有设置为编译,而是内容。因此,在解决方案资源管理器中,单击 BlogPosts.cs ,转到属性并将Build Action设置更改为编译

另一个问题是您的BlogPosts缺少控制器后缀。将您的班级重命名为BlogPostsController

如果您创建一个特殊的文件夹来保存Web API控制器,例如 ApiControllers ,那可能会更好。