如何在自托管owin服务器中动态创建Web API(REST api)?

2024-01-12

我正在寻找一种动态生成 W​​eb api 并在运行时添加它们的方法(在自托管服务器初始化之后)。

基本上这个想法是: 1. 创建一个 selfhost owin 服务器,为静态/已定义的控制器(Web api)提供服务 -> 这部分没问题

  1. 稍后,我想动态生成一个新的控制器并将其以某种方式添加到服务器,以便客户端可以向它发送请求。 -> 有办法做到这一点吗?我知道我可以动态构建一个控制器并将其添加到服务器,然后再将其初始化以服务现有的 Web api(使用 CustomAssemblyResolver)。

  2. 现在现有的控制器可能需要更新。我想重新生成现有控制器并更新服务器以使用新定义(可能是参数更改、api 名称更改等) 有办法做到这一点吗?我们可以在不停止所有控制器的情况下回收一个控制器吗? 如果可以以某种方式支持此功能,是否意味着该服务将在一段时间内不可用(直到更新完成)。

  3. 理想情况下,它会像 IIS 中托管的 Web 服务一样工作。如果 Web 服务定义在 2 个请求之间发生更改。第一个请求转到旧定义,第二个请求透明地定向到新定义。服务不会中断。

有任何想法吗?

提前致谢


找到了解决方案。如果其他人正在寻找这个,我需要覆盖 DefaultHttpControllerSelector。 这是一篇关于这个主题的非常好的文章:link http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/因此,基本上对于上面提到的用例,我需要创建一个新的 AppDomain,在其中启动我的服务,并在运行时动态加载我的程序集。 我最终需要覆盖 DefaultHttpControllerSelector 来捕获请求。 当请求到达时,它就可以控制我要使用的控制器。在那里我可以通过加载新程序集等来动态更新控制器。 主要要注意的是,这是针对每个请求执行的,因此它很容易影响性能和内存。 所以我将实现我自己的控制器缓存。

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

如何在自托管owin服务器中动态创建Web API(REST api)? 的相关文章

随机推荐

  • 根据打字稿中的属性对对象数组进行排序

    我在表中显示了一个包含 请求 类型项目的数组 我想对表的列进行排序 因此我计划为每个列标题创建一个单击方法 此方法根据该列中显示的属性值对数组进行排序 public sortProduct void this requests sort a
  • Qt4 的命令行解析器

    我正在寻找 Qt4 的命令行解析器 我做了一个小的谷歌搜索 发现了这个 但是它缺乏对 enable foo 和 disable foo 开关的支持 除此之外 它看起来像是一个真正的赢家 EDIT 看来Frologic 删除了这个 因此 我看
  • 具有即时应用程序的 Android 架构组件

    我想让我的应用程序为即时应用程序做好准备 我创建了一个应用程序模块 基本模块和一个功能模块 如果我在此配置中运行我的项目 一切都会很好 当我在基本模块 Gradle 文件中实现以下几行时 annotationProcessor androi
  • 如何进行多级公会?

    我有这个设置 Continent gt Country gt City gt Post 我有 class Continent lt ActiveRecord Base has many countries end class Country
  • 超工作平台。将文件从 FileOpenPicker 复制到本地存储

    FileOpenPicker picker new FileOpenPicker picker ViewMode PickerViewMode Thumbnail picker SuggestedStartLocation PickerLo
  • 仅向登录用户发送 Firebase 推送通知

    我开发了一个与 Firebase 集成的 iOS 应用程序来提供远程推送通知 该应用程序包括登录功能 并使用发送通知FCM代币即使用户未登录 也会发送它 我明白为什么会发生这种情况 因为 FCM 令牌是应用程序 设备组合而不是应用程序 用户
  • 使用带有 selenium Geckodriver 的 http 代理

    我尝试了一些方法 但没有一个起作用 有人有使用 HTTP 代理与 Geckodriver for Selenium 3 的工作示例吗 我正在使用 Java 绑定 这是我尝试过的 DesiredCapabilities capabilitie
  • 从链表中删除总和为零的元素

    给定一个链表形式的列表 我必须取消所有总和为0 零 的资源并返回剩余的列表 Like 6 6 3 2 5 4 returns 4 8 10 4 1 3 return 8 10 我只需要算法来解决这个问题 这其实才是经典子集和问题 这是一个众
  • 将shared_ptr传递为shared_ptr

    通过考试的最佳方法是什么shared ptr派生类型的函数 该函数采用shared ptr基本类型 我一般都会通过shared ptr通过引用避免不必要的复制 int foo const shared ptr
  • Visual Studio:重命名变量时的快捷方式

    在 Visual Studio 中 当您在其定义中重命名变量名称时 最后一个字母中有一个小下划线 因此如果您将鼠标悬停在该变量上 您将获得选项 将 OldVaribleName 重命名为 NewVariableName 然后重命名该过程中的
  • 为什么我的公式显示错误 - MS Excel 中的计算列公式不一致?

    我的公式显示错误 计算列公式不一致 但其工作和返回结果仍然符合预期 公式 IF B7 IF MINUTE M7 gt 15 TRUNC HOUR M7 MINUTE M7 60 1 TRUNC HOUR M7 MINUTE M7 60 我正
  • 如何向具有颜色分配的散点图添加图例

    我有一个 x 和 y 值列表以及每个点的颜色分配列表 绿色 蓝色 红色 等 我发现的所有示例都会基于单独的 plt scatter 命令生成图例 稍后一个简单的 plt legend 就足够了 从 Python 的 pandas 中的数据帧
  • WiX 3.8:创建 .EXE 安装程序

    早在 WiX 3 7 中 就有一个setupbld exe工具 可以输出 EXE安装文件 第 4210 期 http wixtoolset org issues 4120 删除了 SetupBld 和朋友 并且没有添加任何内容作为交换 我想
  • 如何更改 Emacs 中的大括号缩进级别?

    我一生都无法通过传统的互联网手段找到任何答案 所以我希望得到一些帮助 对我来说 Emacs 现在倾向于在大括号上进行缩进 如下所示 if 我觉得这非常令人恼火 我什至从未在其他地方见过这种行为 无论如何 我期望的行为是 if 如果有人知道如
  • 查找在 R 中构成主键的变量组合

    这是我的玩具数据框 df lt tibble tribble var1 var2 var3 var4 var5 var6 var7 A C 1L 5L AA AB 1L A C 2L 5L BB AC 2L A D 1L 7L AA BC
  • file.png 未预编译

    我以为我已经弄清楚了资产管道 但现在不再了 我有一个名为clients css scss 的样式表 client list view width 650px height 500px overflow auto table width 65
  • 如何解决“模块‘pandas’没有属性‘scatter_matrix’”错误?

    我正在尝试奔跑pd scatter matrix 使用以下代码在 Jupyter Notebook 中运行 import matplotlib pyplot as plt import pandas as pd Load some data
  • 通过指向 int 的指针为 char 数组起别名是否合法?

    我知道标准中明确允许以下内容 int n 0 char ptr char n cout lt lt ptr 那这个呢 alignas int char storage sizeof int int ptr int storage 0 ptr
  • 使用 Task.Run 旋转的线程始终退出,退出代码为 259 [重复]

    这个问题在这里已经有答案了 作为一个简单的示例 我有一个 WPF 应用程序 主窗口上有一个按钮 后面的代码如下 public partial class MainWindow Window public MainWindow Initial
  • 如何在自托管owin服务器中动态创建Web API(REST api)?

    我正在寻找一种动态生成 W eb api 并在运行时添加它们的方法 在自托管服务器初始化之后 基本上这个想法是 1 创建一个 selfhost owin 服务器 为静态 已定义的控制器 Web api 提供服务 gt 这部分没问题 稍后 我