asp mvc 5使用web api

时间:2015-02-18 18:41:46

标签: asp.net-mvc entity-framework asp.net-web-api asp.net-mvc-scaffolding

我已经开始在Mvc5中学习webApi了。

我尝试了我的第一个项目,但不幸的是它没有用,我无法理解为什么。

我已经完成了以下步骤:

1-首先,我在sql server

中创建了一个名为Person的数据库

2-然后我添加了一个名为Person的表,其中包含以下字段:Id作为主键,FullName

3-我做了一个空的MVC项目是vs 2013

4-我添加了我的EF模型并重建了项目

5-我创建了一个名为api的新文件夹

6-我添加了一个控制器(带有动作的Web Api 2,使用实体框架):

enter image description here

7-我将这些行添加到Global.asax

using System.Web.Http;
using System.Web.Routing;

8 - 这是我的申请开始:

    protected void Application_Start()
    {
        GlobalConfiguration.Configure(WebApiConfig.Register);
        AreaRegistration.RegisterAllAreas();
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }

但是当我运行应用程序并将http://localhost:XXXX/api/people输入到网址浏览器中时,无法找到该资源。

enter image description here

有人可以帮助我吗?

提前致谢

这是PeopleController:

public class PeopleController : ApiController
{
    private PersonEntities db = new PersonEntities();

    // GET api/People
    public IQueryable<Person> GetPeople()
    {
        return db.People;
    }

    // GET api/People/5
    [ResponseType(typeof(Person))]
    public IHttpActionResult GetPerson(int id)
    {
        Person person = db.People.Find(id);
        if (person == null)
        {
            return NotFound();
        }

        return Ok(person);
    }

    // PUT api/People/5
    public IHttpActionResult PutPerson(int id, Person person)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        if (id != person.Id)
        {
            return BadRequest();
        }

        db.Entry(person).State = EntityState.Modified;

        try
        {
            db.SaveChanges();
        }
        catch (DbUpdateConcurrencyException)
        {
            if (!PersonExists(id))
            {
                return NotFound();
            }
            else
            {
                throw;
            }
        }

        return StatusCode(HttpStatusCode.NoContent);
    }

    // POST api/People
    [ResponseType(typeof(Person))]
    public IHttpActionResult PostPerson(Person person)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        db.People.Add(person);
        db.SaveChanges();

        return CreatedAtRoute("DefaultApi", new { id = person.Id }, person);
    }

    // DELETE api/People/5
    [ResponseType(typeof(Person))]
    public IHttpActionResult DeletePerson(int id)
    {
        Person person = db.People.Find(id);
        if (person == null)
        {
            return NotFound();
        }

        db.People.Remove(person);
        db.SaveChanges();

        return Ok(person);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            db.Dispose();
        }
        base.Dispose(disposing);
    }

    private bool PersonExists(int id)
    {
        return db.People.Count(e => e.Id == id) > 0;
    }
}

0 个答案:

没有答案