gpt4 book ai didi

asp.net - 如何为在 ASP.NET WebAPI 2 中使用路由属性的特定 Controller 添加 MessageHandler?

转载 作者:行者123 更新时间:2023-12-04 08:51:06 25 4
gpt4 key购买 nike

是否可以仅为使用路由属性的特定 Controller 添加 MessageHandler?

如果它不包含某些 header ,我想在管道中更早地切断请求。我想要
提到:

  • 我不能在 WebApiConfig 中添加另一个路由,我们必须使用来自 Controller 的路由属性。
  • 我不想全局添加 MessageHandler。
  • 它必须是一个 MessageHandler(在管道的早期)。我们对此有替代方案,但我们正在努力提高效率。

  • 例如,我用以下 RoutePrefix: api/myapicontroller 和一个带有 Route("") 的操作装饰了 Controller 。 (我知道这很奇怪,我们正在根据查询字符串选择不同的操作)

    然后,我添加了
    config.Routes.MapHttpRoute(
    name: "CustomRoute",
    routeTemplate: "api/myapicontroller/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: null,
    handler: new myMessageHandler()
    );

    如果我把这个代码放在 config.MapHttpAttributeRoutes(); 之前myMessageHandler 正在执行,但我收到此消息:

    No action was found on the controller 'myapicontroller' that matches the request



    如果我把 config.MapHttpAttributeRoutes();首先, myMessageHandler 永远不会执行,但 myapicontroller 中的 my 操作被调用。

    最佳答案

    不幸的是,您不能通过 AttributeRouting 设置任何处理程序。 .如果你想为特定路由分配处理程序,你必须通过 MapHttpRoute 注册它只要。除非您需要在 defaults 中添加您的 Controller 名称部分如 Ajay Aradhya 的回答并删除 Route来自您的操作的属性,因为您可以使用 Route 注册路由属性或 MapHttpRoute方法,但不能同时使用。

    另请注意,您需要创建管道,否则您的处理程序将工作但请求不会命中 Controller 操作。
    my answer有关详细信息的类似问题。

    关于asp.net - 如何为在 ASP.NET WebAPI 2 中使用路由属性的特定 Controller 添加 MessageHandler?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42703286/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com