有一個非常基本的事情要做 - 我需要公開一個post API,例如mobile/api/pswdrec,我想綁定到我的PasswordController以避免那個沉悶的名字。ASP.NET WebApi如何將控制器路由到不同的名稱
這是一個帶有區域的webapi,我正在嘗試Attribute Routing和MapHttpRoute
。迄今爲止都沒有效果。
public class PasswordController : MobileApiControllerBase
{
//[Route("api/mobile/pswdrec/")]
public RestResponseMessage Post(UserCredentialsModel credentials)
{
return RestResponseMessage.OK();
}
}
檢查客戶端和請求是正確的json請求。當我簡單地將控制器的名稱更改爲PswdrecController
時,它開始工作。
是否有任何其他方式來「重命名」控制器?
MVC的工作了多年,但現在被困在一個很簡單的問題:)謝謝你的幫忙;)
編輯:
public class MobileApiAreaRegistration : AreaRegistration
{
private static IWindsorContainer _container = new WindsorContainer();
public override string AreaName
{
get
{
return "MobileApi";
}
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.Routes.MapHttpRoute(
name: "MobileApiDefault",
routeTemplate: "api/mobile/{controller}/{id}",
defaults: new { controller = "Expenses", id = RouteParameter.Optional }
);
}
public static void SetupWebApi(HttpConfiguration configuration)
{/* just javascript serizlizer setup */}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
MobileApiAreaRegistration.SetupWebApi(config);
}
public static void SetupWindsorContainer(IWindsorContainer container)
{
MobileApiAreaRegistration.SetupWindsorContainer(container);
WebApiAreaRegistration.SetupWindsorContainer(container);
}
}
public class WebApiApplication : HttpApplication
{
private static readonly IWindsorContainer _container = new WindsorContainer();
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
InitializeWindsorContainer();
//InitializeExceptionFilters();
}
}
沒什麼特別的,但我不能使它發揮作用。當我使用它的一顆璀璨如星的:)
解決方案控制器的原始名稱:好了,問題是在路由器的優先級,使之與「API /移動/ pswdrec/{ID的配置}「應該放在默認路由器之前。仍然無法使用屬性路由工作。
是的,我使用那個,但它根本沒有效果。我在想這可能與這篇文章有關嗎? http://stackoverflow.com/questions/17318901/mvc-4-5-web-api-routing-not-working/17321724#17321724 –
我無法重現你的問題在我的結束。你能分享你的路線配置是怎樣的嗎? –
更新了問題,以便查看是否有任何可疑內容。看起來像一個普通的WebApi配置的東西。 –