0

我有一个使用 Visual Studio 的模板创建的 Hottowel 项目。我想在该项目中添加 Web API 功能。我已经为控制器文件夹创建了一个 Web Api 控制器并尝试访问,"http://localhost:53397/api/Values" 但我收到一条The resource cannot be found错误消息。

我的控制器代码如下所示

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;

namespace MvcApplication8.Controllers
{
    public class ValuesController : 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)
        {
        }
    }
}

我在名为 BreezeWebApiConfig.cs 的 APP_start 文件夹中有一个 cs 文件,其中包含映射路径的逻辑,如下所示。

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
          name: "BreezeApi",
          routeTemplate: "api/{controller}/{action}"
      );

如果我缺少 Web APi 的任何配置设置,请告诉我。

4

2 回答 2

1

尝试像下面这样装饰您的 ApiController:

[BreezeController]
public class NorthwindIBModelController : System.Web.Http.ApiController {

    readonly EFContextProvider<NorthwindIBContext> ContextProvider =
         new EFContextProvider<NorthwindIBContext>();

    [HttpGet]
    public String Metadata() {
      return ContextProvider.Metadata();
    }

    [HttpPost]
    public SaveResult SaveChanges(JObject saveBundle) {
      return ContextProvider.SaveChanges(saveBundle);
    }

    [HttpGet]
    public IQueryable<Customer> Customers() {
      return ContextProvider.Context.Customers;
    }

如需更多信息,请查看此处的微风文档。

于 2013-10-26T16:00:15.673 回答
0

似乎您发出了错误的 URL 请求。查看 WebApi 的轻量级路由配置。您需要像这样通过,http://localhost:53397/api/Values/Get因为轻风正在使用基于控制器操作的路由。

希望这会有所帮助。

于 2013-10-17T07:42:40.220 回答