路径参数和多种控制器类型

2024-01-08

我有一个 asp.net Web api,使用属性在控制器上进行路由。操作级别上没有路线属性。访问资源的路径是:

[Route("{id}"]
public MyApiController: ApiController
{
    public HttpResponseMessage Get(Guid id)
    { 
        // ...
    }
}

我的问题是,当我想创建一个搜索控制器时,我希望 URL 为

[Route("search")]

但这会导致错误:Multiple controller types were found that match the URL。是否可以确保在通用路由之前选择精确匹配的路由?

从技术上讲,这句话search可能是第一个控制器的有效 ID,但作为{id}是一个guid,这种情况永远不会发生,因此我想选择具有完全匹配路线的控制器。


您可以使用路线限制做这项工作。例如,您可以限制您的 ID 路由仅接受有效的 GUID。

下面是一个仅接受 URL 中的 GUID 字符串的 ID 控制器:

[System.Web.Http.Route("{id:guid}")]
public class MyApiController: ApiController
{
    public HttpResponseMessage Get(Guid id)
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}

搜索控制器将匹配像这样的 url"/search"。这是搜索控制器:

[System.Web.Http.Route("search")]
public class SearchController : ApiController
{
    public HttpResponseMessage Get()
    {
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}

约束将防止路由器中的匹配冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路径参数和多种控制器类型 的相关文章

随机推荐

  • CSS 展开/收缩动画以显示/隐藏内容

    我正在尝试创建一个可以通过简单的滑出动画展开和折叠的盒子 如果运行下面的示例 其想法是 它以一条红线开始 当您单击按钮时 它会分成两条读取线 并轻轻展开以显示内容 就像从表格中拉出一幅画一样 我已经尝试过变换 动画 相对 与顶部定位 但无法
  • 如何使用 serverless.yml 创建 dynamodb 表并使用 python boto3 删除其中的项目?

    我使用 serverless yml 创建了 dynamodb 表 如下所示 resources Resources myTable Type AWS DynamoDB Table DeletionPolicy Retain Propert
  • 计算每日平均值(或者:某个日期范围内有多少个星期一?)

    我的 MySQL 表具有以下列 datetime price paid 我正在尝试计算两个日期之间一周中每天的平均销售额 这意味着我需要选择日期 startDate 和 endDate 之间的销售额总和 按工作日分组 然后除以该范围内每个工
  • CUDA 中的 FIR 滤波器(作为一维卷积)

    我正在尝试在 CUDA 中实现 FIR 有限脉冲响应 滤波器 我的方法非常简单 看起来有点像这样 include
  • 使用适用于 iOS 的 SDK 在 Linkedin 上分享不起作用

    我正在使用 iOS 版移动 SDK 版本 1 0 7 来分享一些内容LinkedIn 我可以获取当前帐户信息 但是当我尝试分享时LinkedIn 总是反馈错误描述 这是我的代码 let url String https api linked
  • 使用 FXMLLoader 时出现 IllegalAccessError

    我正在尝试将 FXML 文件加载到我的 javafx 应用程序中作为我的根小部件 我使用带有 java 11 04 的 Windows 8 1 和带有 Eclipse 2019 IDE 的 javafx sdk 13 我在互联网上搜索了一下
  • 增加 d3 SVG 容器大小

    我正在尝试动态增加 SVG 容器的大小 以便它适合所有数据 有一个小提琴解释了 SVG 的动态增加 http jsfiddle net CKW5q http jsfiddle net CKW5q 然而 相同的概念不适用于双向桑基图 d3 以
  • 如何旋转图像并保存图像

    在我的应用程序中 我的 div 中有一个图像 一个按钮 当我使用 jquery 单击按钮时 我想旋转显示的图像并保存旋转的图像 我已经使用了代码 http code google com p jquery rotate http code
  • 如何通过打字稿代码动态注入 Angular2 子组件?

    上下文 我正在尝试创建一个可以包含多个组件的自定义下拉列表 我可以通过以下方式完成此任务
  • 入门:为 Node.js 设置数据库

    我是 Node js 的新手 但很高兴尝试一下 我在用Express http expressjs com 作为网络框架 以及Jade http jade lang com作为模板引擎 两者都很容易完成以下设置本教程 http www us
  • 从实现类中的接口继承注释?

    假设我有这个界面 public interface IFoo
  • 如何根据设备大小操作 iframe css

    我正在构建此网站 但在根据设备大小操作 iframe 时遇到问题 基本上 我想要的是 如果在平板电脑上使用 则视频是一种尺寸 但例如 如果用户使用手机等移动设备 则视频是其他尺寸 建议它小于平板电脑或桌面窗口尺寸 如果有任何一个从那以后 我
  • JSP scriptlet 中的方法合法吗?

    我知道不推荐它 我应该使用标签库等 但我仍然想知道在 JSP scriplet 中声明方法是否合法 那合法吗 我收到一些奇怪的编译错误 例如a is expected 这似乎不合适 谢谢 您需要使用声明语法
  • Google USB 包未显示在 SDK 管理器中

    我最近下载并安装了 Eclipse Java EE IDE Indigo Service Release 2 我制作了一个在模拟器上运行良好的简单应用程序 现在我想尝试在我的 Android 移动设备上运行它 在 Android 开发者网站
  • 允许后台应用程序设置不同进程的前台窗口

    首先 我知道这是一个有争议的讨论 但我希望我们能够保持技术性 我有一个在后台启动的应用程序 我希望它能够在不同的进程中激活 聚焦窗口 但是 即使我要激活其窗口的进程已调用AllowSetForegroundWindow ASFW ANY 调
  • 接受具有空接口返回类型的参数中的函数

    我想了解为什么下面的代码片段无法编译 Go 接受函数作为可能具有任何返回类型的函数参数的方式是什么 package main func main test a Error cannot use a type func string as t
  • 如何在 Sphinx 处理的文档字符串中表达单个参数或返回值的多种类型?

    有时 Python 中的函数可能接受灵活类型的参数 或者它可能返回一个灵活类型的值 现在我不记得这样的函数的一个很好的例子 因此我用下面的玩具示例来演示这样的函数可能是什么样子 我想知道如何使用 Sphinx 文档符号为此类函数编写文档字符
  • 使弹性项目向右浮动

    I have a div class parent div class child Ignore parent div div another child div div 家长有 parent display flex 对于我的第一个孩子
  • 如何在 ravendb 3.5 中查找附件?

    我目前正在调试一些代码 这些代码应该返回给定文档的附件 但没有返回任何附件 Raven studio 表明数据库中有附件 它向我显示存在多个附件 但我无法通过工作室 Web UI 查看特定文档是否有附件 有没有办法通过工作室用户界面查询附件
  • 路径参数和多种控制器类型

    我有一个 asp net Web api 使用属性在控制器上进行路由 操作级别上没有路线属性 访问资源的路径是 Route id public MyApiController ApiController public HttpRespons