0
エンティティフレームワークを使用したwebApiプロジェクトがあります エンティティフレームワークを使用して「エンティティフレームワークを使用してwebApi2コントローラ」を使用して、エンティティコントローラ の1つを追加しましたが、webApiコントローラルーティングが機能しません
要求である:
var baseApi = "/api/members/";
return {
getAllMembers: getAllMembers
};
function getAllMembers() {
return $http({
url: baseApi ,
method: "GET"
});
}
WEBAPI制御コードである:app_startで
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using System.Web.Http.Description;
using sqs;
namespace sqs.Controllers
{
public class membersController : ApiController
{
private sqsEntities db = new sqsEntities();
// GET: api/members
public IQueryable<member> Getmembers()
{
return db.members;
}
// GET: api/members/5
[ResponseType(typeof(member))]
public IHttpActionResult Getmember(long id)
{
member member = db.members.Find(id);
if (member == null)
{
return NotFound();
}
return Ok(member);
}
// PUT: api/members/5
[ResponseType(typeof(void))]
public IHttpActionResult Putmember(long id, member member)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != member.AccountNumber)
{
return BadRequest();
}
db.Entry(member).State = EntityState.Modified;
try
{
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!memberExists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
// POST: api/members
[ResponseType(typeof(member))]
public IHttpActionResult Postmember(member member)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.members.Add(member);
try
{
db.SaveChanges();
}
catch (DbUpdateException)
{
if (memberExists(member.AccountNumber))
{
return Conflict();
}
else
{
throw;
}
}
return CreatedAtRoute("DefaultApi", new { id = member.AccountNumber }, member);
}
// DELETE: api/members/5
[ResponseType(typeof(member))]
public IHttpActionResult Deletemember(long id)
{
member member = db.members.Find(id);
if (member == null)
{
return NotFound();
}
db.members.Remove(member);
db.SaveChanges();
return Ok(member);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool memberExists(long id)
{
return db.members.Count(e => e.AccountNumber == id) > 0;
}
}
}
WEBAPIの設定は次のとおりです。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace sqs
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{name}",
defaults: new { name = RouteParameter.Optional }
);
}
}
}
なし[RoutePrefix]と[ルート]作業、
は、ウェブAPI2で動作するために必要な設定やコードがありませんか?ありがとうございます!
は、あなたの答え をありがとうございましたが、私は任意のIDを持っていけない最初の方法に到達したい、意味: // GET:API /メンバーを 公共のIQueryable Getmembers() { db.membersを返します。 } しかし、設定では "name"を "id"に変更します 何も変更されていません! –
seyyedmohammad
私は私のquで言及したように。ルートとRoutePrefixは動作しません! 私はあまりにもそれらを試した:D – seyyedmohammad