web-services - 指定 Controller 的MapHttpRoute

标签 web-services routes asp.net-web-api2

我创建了一个 WebApi 2 Web 服务。 为了支持比某些端点的默认路由更复杂的路由,我添加了如下内容:

config.Routes.MapHttpRoute(
    name: "StatusApi",
    routeTemplate: "api/{controller}/Status/{status}",
    defaults: new { status = RouteParameter.Optional }
);

config.Routes.MapHttpRoute(
    name: "DisplayUnitApi",
    routeTemplate: "api/{controller}/DisplayUnit/{unit}",
    defaults: new { status = RouteParameter.Optional }
);               

我的意思是这些新路由不是针对所有端点,而是仅针对其中一些端点。 不幸的是现在所有端点都支持这些路由,但我更愿意仅为我选择的端点保留路由。

是否有可能有选择性

一个例子:

POST api/DoAction

POST api/DoAction/Status

POST api/DoAction/Name/{unit}

在添加新路由之前,唯一可用的是 POST api/DoAction。对于此 Controller ,我想仅保留原始端点可访问。

谢谢, 罗伯托

最佳答案

尝试下面的代码

config.Routes.MapHttpRoute(
name: "StatusApi",
routeTemplate: "api/{controller}/Status/{status}",
defaults: new { controller = "xxxx", action = "yyyyy" });

config.Routes.MapHttpRoute(
name: "DisplayUnitApi",
routeTemplate: "api/{controller}/DisplayUnit/{unit}",
defaults: new { controller = "xxx", action = "yyyyy" });  

关于web-services - 指定 Controller 的MapHttpRoute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35204745/

相关文章:

internet-explorer - 请求头不在 Access-Control-Allow-Headers 列表中

web-services - 使用 apache2 php 页面和 tomcat REST 调用进行身份验证

ruby-on-rails - 带有命名空间 rails 3.1 的 URL 路由中的点

c# - 如何使用angularjs在c#中调用API

Angular 6 - 路由到惰性模块的子模块不起作用

ruby-on-rails - Rails 禁用编辑更新删除路线

c# - 选项 405(不允许的方法)web api 2

ruby-on-rails - 使用 node.js,您实际上是在 js 中编写您的业务逻辑还是调用您的服务层?

web-services - 来自 ColdFusion 8 的未经授权的 Sharepoint WSDL

java - 如何对发送 SOAP Web 服务请求的代码进行单元测试?