Routing 只有一个可变段的Web API 2.0路由(用于输入参数)

Routing 只有一个可变段的Web API 2.0路由(用于输入参数),routing,asp.net-web-api2,Routing,Asp.net Web Api2,我正在尝试创建表单的简单路由(在以下路由模板中,“param”是唯一的变量): (参数不是可选的) 为了简单起见,这是我的WebApiConfig.Register()方法中唯一的路由。不,没有对config.maphttpAttribute路由()的调用。 然而,当调用时,似乎找不到路线,如: localhost:xxx/ActionName/?param=blah 或 只是想看看如果我将路线定义为这样会发生什么: config.Routes.MapHttpRoute ( name:

我正在尝试创建表单的简单路由(在以下路由模板中,“param”是唯一的变量):

(参数不是可选的)

为了简单起见,这是我的
WebApiConfig.Register()
方法中唯一的路由。不,没有对
config.maphttpAttribute路由()的调用。

然而,当调用时,似乎找不到路线,如:

localhost:xxx/ActionName/?param=blah

只是想看看如果我将路线定义为这样会发生什么:

config.Routes.MapHttpRoute (
    name: "RouteName",
    routeTemplate: "Controller/ActionName/{param}",
    defaults: new { controller = "ControllerName", action = "ActionName" }
);
localhost:xxx/Controller/ActionName/?param=blah
并这样称呼:

config.Routes.MapHttpRoute (
    name: "RouteName",
    routeTemplate: "Controller/ActionName/{param}",
    defaults: new { controller = "ControllerName", action = "ActionName" }
);
localhost:xxx/Controller/ActionName/?param=blah


还是没有快乐。是我遗漏了什么,还是Web API没有使用默认对象映射控制器?

感谢您的回复

不幸的是,由于机密性,我不能发布实际代码。我得到了404-在我试图解决的问题中找不到

如果我将“param”添加到默认对象,结果如下: 新建{controller=“ControllerName”,action=“ActionName”,param=RouteParameter.Optional}

(即使这是一个必需的参数)那么一切都可以正常工作。除非我这样做,否则我不能使用带有命名参数的查询字符串格式

localhost:xxx/ActionName/?param=blah

如果省略,则必须使用分段模式,如下所示:

localhost:xxx/ActionName/blah


再次感谢您想要查看它。

显示您试图映射到的控制器和操作的示例,因为它与上面的示例相关。请正确设置您的问题格式,因为它目前很难阅读
localhost:xxx/Controller/ActionName/blah