this articleの手順に従って、ASP.NET MVC 5を使用してRESTful Web APIサービスを構築しました。プロセスの一環として、私は、コントローラの設定:快適なWebサービスリポジトリが適切にルーティングされない
[Route("api/[controller]")]
public class AccountController : Controller
{
[FromServices]
public IAccountRepository Repository { get; set; }
[HttpGet(Name = "GetAll")]
public IEnumerable<UserAccount> GetAll() {
return Repository.GetAll();
}
[HttpGet("(id)", Name = "GetUserAccount")]
public IActionResult GetUserAccount(int id) {
var account = Repository.GetUserAccount(id);
if (account == null)
return HttpNotFound();
return new ObjectResult(account);
}
[HttpPost("(item)", Name = "AddUserAccount")]
public IActionResult Add([FromBody] UserAccount item) {
if (item == null)
return HttpBadRequest();
return CreatedAtRoute("GetUserAccount", new { controller = "Account", id = item.Id }, item);
}
[HttpDelete("(id)", Name = "RemoveUserAccount")]
public void Remove(int id) {
Repository.Remove(id);
}
[HttpPost("(id)", Name = "UpdateUserAccount")]
public IActionResult Update([FromBody] UserAccount item) {
if (item == null)
return HttpBadRequest();
if (!Repository.Update(item))
return HttpNotFound();
return new NoContentResult();
}
}
私はURL http://localhost:2733/api/accountを使用してブラウザからこのサービスにアクセスすると、 `GETALLアクションがOKである、実行されますが、私がアクセスしようとすると、それは使用してURL http://localhost:2733/api/account/getall、私は404エラーを取得します。
どうしたのですか?
デフォルトルートが実行されるようです。 routes.MapMvcAttributeRoutes();を呼び出していますか?あなたのブーストラッピングコードには何か? –
プロジェクト内のどこでも見つかりません –
デフォルトのルート定義の前に追加してみてください。リンクをチェックしてください:https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/ –