有一个非常基本的事情要做 - 我需要公开一个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配置的东西。 –