以编程方式创建控制器

Create a controller programmatically(以编程方式创建控制器)
本文介绍了以编程方式创建控制器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

已经决定我们应该有一个跨不同应用程序的通用上载http API。我有一个要在多个WebAPI项目中使用的文件上载控制器。

我的上传控制器如下所示

namespace MyNamespace
{
    [Authorize("PolicyName")]
    [Route("Upload")]
    public class UploadController : Controller
    {
        [HttpPost]
        [Route("Upload")]
        public async Task<IActionResult> Upload(UploadModel model)
        {
             // impl..
             return Ok();
        }
    }
}

我天真地以为我只是把它解压缩到一个类库中,我就可以注册它了,但是我找不到方法?

无论如何,我认为这不是正确的使用方法。我希望能够配置授权策略名称,并可能配置路由。所以我在想,也许我想构建控制器及其路由,并授权设置和注册一些方式?

我对API的想法是这样的..

((IApplicationBuilder)app).UseUploadController(config => {
    config.PolicyName = "Whatever",
    config.UploadRoute = "UploadStuff"
});

..。这将创建并注册控制器。不过,我不知道从何说起。我完全不知道控制器是如何发现的,也不知道它们是否可以编程注册。

有人有什么可以参考的指针或库吗?

推荐答案

您可以将控制器放在引用的类库中(根据需要),然后在任何项目中,您可以根据需要从该控制器继承。如果您不需要任何其他功能,您可以将子类留空,但是如果您想要添加一些东西,您可以很容易地扩展它。 此外,您可以使用任何其他控制器名称,并且可以设置不同的路由、授权等。

这篇关于以编程方式创建控制器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

DispatcherQueue null when trying to update Ui property in ViewModel(尝试更新ViewModel中的Ui属性时DispatcherQueue为空)
Drawing over all windows on multiple monitors(在多个监视器上绘制所有窗口)
Programmatically show the desktop(以编程方式显示桌面)
c# Generic Setlt;Tgt; implementation to access objects by type(按类型访问对象的C#泛型集实现)
InvalidOperationException When using Context Injection in ASP.Net Core(在ASP.NET核心中使用上下文注入时发生InvalidOperationException)
LINQ many-to-many relationship, how to write a correct WHERE clause?(LINQ多对多关系,如何写一个正确的WHERE子句?)