我已經在我的控制器上應用了屬性路由,並且它正在發出錯誤的行爲。我不知道我在哪裏弄錯了。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方法特別感興趣。下面是我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如下
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);
}
}
在瀏覽器中如果鍵入http://localhost:54919/api/v1/clients/?id=1/getemailid它帶我去http://localhost:54919/api/v1/clients這不是我想要的。
如果我嘗試http://localhost:54919/api/v1/clients/1/getemailid我收到404錯誤。
我不確定我的錯誤。
當你說「它不工作」......你是什麼意思?你有錯誤嗎?如果是這樣,它說什麼?它是否會路由到意想不到的地方?如果是的話,在哪裏? – simonlchilds
@Mhuhu我們可以看到調用GetClientEmailId方法的代碼嗎? – swatsonpicken
尋求調試幫助的問題(「**爲什麼這段代碼不工作?**「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現**的最短代碼**。沒有**明確問題陳述的問題**對其他讀者無效。 :如何創建一個[mcve] – Nkosi