コントローラーに属性ルーティングを適用しましたが、間違った操作にルーティングされています。私はどこが間違っているのか分かりません。ASP.NET Web APIの属性が正しく処理されていません。
using System.Collections.Generic;
using System.Web.Http;
using System.Web.Http.Description;
using System.Linq;
using System;
namespace Iboo.API.Controllers
{
public class ClientsController : ApiController
{
private readonly IClientRepository _repository;
public ClientsController(IClientRepository repository)
{
_repository = repository;
}
// GET: api/Clients
[Route("api/v1/clients")]
public IEnumerable<Client> Get()
{
//code
}
// GET: api/Clients/5
[HttpGet]
[ResponseType(typeof(Client))]
[Route("api/v1/clients/get/{id}")]
public IHttpActionResult GetClientById(int id)
{
//code
}
// GET: api/Clients/5
[HttpGet]
[ResponseType(typeof(string))]
[Route("api/v1/clients/{id}/emailid")]
public IHttpActionResult GetClientEmailId(int id)
{
//code
}
}
}
私はGetClientEmailId方法で特に興味を持っています:
は、ここに私のコントローラです。私は私が欲しいものではありませんどのhttp://localhost:54919/api/v1/clientsに私を取っているhttp://localhost:54919/api/v1/clients/?id=1/getemailidを入力した場合、ブラウザでは
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
}
を次のように以下の私のWebApiConfigある
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
var container = new UnityContainer();
container.RegisterType<IClientRepository, ClientRepository>(new
HierarchicalLifetimeManager());
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/v1/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
私のGlobal.asax.csです。
私が試してみると、http://localhost:54919/api/v1/clients/1/getemailid私は404エラーが発生しています。
私は何が間違っているのか分かりません。
「それは動作していません」と言われると...どういう意味ですか?間違いはありますか?もしそうなら、それは何を言いますか?予期せぬ場所へのルートはありますか?もしそうなら、どこ? – simonlchilds
@Munhu GetClientEmailIdメソッドを呼び出すコードを確認できますか? – swatsonpicken
デバッグのヘルプを求める質問( "**このコードはなぜ動作しませんか?** ")には、目的の動作、特定の問題またはエラー、およびそれを再現するのに必要な最短コード**が含まれていなければなりません**。 :[mcve]の作成方法 – Nkosi