如何在ASP.net Core 2中创建动态API - c#

我需要知道如何通过调用另一个API然后传递[API name][API parameters]来动态创建API,让我们假设我们拥有此API,如下所示:

如何在ASP.net Core 2中创建动态API - c#

[HttpPost("GenerateApi")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public IActionResult GenerateApi(RootObject ro)
{           
   //Here I need piece of code to create API dynamically
   return Ok(new { ro.apiName, ro.parameters });       
}

这些是模型:

public class RootObject
{
   public string apiName { get; set; }
   public List<parameter> parameters { get; set; }
}

public class parameter
{
   public string parameterName { get; set; }
   public dynamic parameterType { get; set; }
}

现在需要做的是在控制器中创建动态API。

因此,我们将创建API,这样就可以从其网址中调用它们

www.example.com/api/v1/[controller]/[apiName]/{[parameter1_value]}/{[parameter2_value]}

请您提供给我一些见解。

参考方案

发现一些可以帮助MVC的东西。如果其他人正在寻找这个,我需要覆盖DefaultHttpControllerSelector。这是一篇关于该主题的非常好的文章:link因此,基本上对于上述我的用例,我需要创建一个新的AppDomain,在其中启动我的服务,并在运行时动态加载程序集。我最后需要覆盖DefaultHttpControllerSelector来捕获请求。当请求到达时,它可以控制我要使用哪个控制器。在那里,我可以通过加载新的程序集等动态地更新控制器。要注意的主要事情是,这是针对每个请求执行的,因此很容易影响性能和内存。因此,我将实现自己的控制器缓存。

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

如何在ASP.NET Core(使用JavascriptService)应用程序中使Node.js代码调用csharp代码? - c#

我正在将asp.net内核用于简单的Web api服务器(实际上是使用Deepstream)。虽然C#可以使用NodeServices.InvokeExportAsync完美地调用nodejs代码,但是当我尝试将Action / Func作为NodeServices.InvokeExportAsync的参数传递给nodejs时,却得到了System.Aggr…

如何在多台服务器中发布Web API Net Core 3.0 - c#

我有一个带有.net core 3.0的Web API,并且我想同时在10台服务器(使用Windows Server)中发布,我可以使用哪种工具来实现?您是否曾经做过类似的任务? 参考方案 这个问题有多个答案,我将尝试解释这些概念,然后由您决定。发布命令dotnet publish - IIS-您可以使用它来创建部署包,即需要放在IIS上的文件夹(如果这是您…

无法将路线映射为行动,ASP.NET Core Web API - c#

我正在研究Web API项目,并且遇到以下问题:我尝试使用以下网址(https://localhost:44328/api/Users/GetUserBy?username=myusername&password=mypassword)调用名为“ GetUserBy”的操作方法,但在浏览器中收到的结果如下所示:{"id":[�…

ASP.NET Core Singleton实例与瞬态实例的性能 - c#

在ASP.NET Core依赖注入中,我只是想知道注册Singleton实例是否会比注册Transient实例更好地提高性能?在我看来,对于Singleton实例,创建新对象和相关对象只需花费一次时间。对于Transient实例,此成本将针对每个服务请求重复。因此Singleton似乎更好。但是,在Singleton上使用Transient时,我们可以获得多…