ASP MVC Core和运行时生成的程序集

时间:2018-01-29 11:50:46

标签: c# .net asp.net-core

我有ASP MVC Core应用程序。

应用程序启动后,我已经使用某些控制器生成动态程序集。 问题是RouteMiddleware不处理对生成的控制器的请求。

如果我打电话

,问题就解决了
services.AddMvc()
        .AddApplicationPart(...)

并将生成的程序集传递给ApplicationPartManager方法中的Startup.ConfigureServices,但我需要在应用程序启动后生成程序集。

1 个答案:

答案 0 :(得分:0)

我添加了自己的IActionDescriptorChangeProvider

internal class ModuleActionDescriptorChangeProvider : IActionDescriptorChangeProvider
{
    internal static ModuleActionDescriptorChangeProvider Instance { get; } = new ModuleActionDescriptorChangeProvider();

    internal CancellationTokenSource TokenSource { get; private set; }

    public IChangeToken GetChangeToken()
    {
        TokenSource = new CancellationTokenSource();
        return new CancellationChangeToken(TokenSource.Token);
    }
}

在服务集合中注册

services.AddSingleton<IActionDescriptorChangeProvider>(ModuleActionDescriptorChangeProvider.Instance);

然后在汇编后生成调用

ModuleActionDescriptorChangeProvider.Instance.TokenSource.Cancel();

表示缓存的ActionDescriptor

集合失效