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

4

1 回答 1

2

App_Data通常不用于这种类型的场景。很可能是您的 BlogPosts.cs文件未设置为Compile,而是设置为Content。因此,在解决方案资源管理器中单击BlogPosts.cs,转到属性并将Build Action设置更改为Compile

另一个问题是您BlogPosts缺少Controller后缀。将您的课程重命名为BlogPostsController.

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

于 2013-06-25T17:11:10.063 回答