路由参数名称是否必须与操作方法参数名称匹配?

时间:2014-07-30 10:31:26

标签: asp.net-mvc asp.net-web-api asp.net-mvc-routing

我们有一个网络API,其路由非常通用(见下文):

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapHttpRoute("3", "{controller}/{action}/{arg1}/{arg2}/{arg3}");
routes.MapHttpRoute("2", "{controller}/{action}/{arg1}/{arg2}");
routes.MapHttpRoute("1", "{controller}/{action}/{arg1}");
routes.MapHttpRoute("0", "{controller}/{action}");

我的理解是,为了使此路由匹配操作方法,操作方法参数必须命名为arg1arg2和{{1} }。例如,我希望以下操作方法匹配:

arg3

我希望以下操作方法不匹配:

public HttpResponseMessage Foo(int arg1)
{ ... }

public HttpResponseMessage Bar(int arg1, int arg2, int arg3)
{ ... }

但是,该项目还包含参数名称不是public HttpResponseMessage Foo(int someOtherParameterName) { ... } arg1等的操作方法。在某些环境中(例如,在我们的CI服务器上运行集成测试),端点工作正常,即这些操作方法 匹配。但是在我的开发机器上,这些端点不起作用。

是否有一些模糊的配置可能会影响路由参数名称和操作方法参数名称之间的关系?或者可能是其中一个相关的dll发生了重大变化?

1 个答案:

答案 0 :(得分:1)

不,Route参数不一定与动作方法参数匹配。它只是应该匹配的参数数量。