我有ASP MVC Core应用程序。
应用程序启动后,我已经使用某些控制器生成动态程序集。 问题是RouteMiddleware不处理对生成的控制器的请求。
如果我打电话
,问题就解决了services.AddMvc()
.AddApplicationPart(...)
并将生成的程序集传递给ApplicationPartManager
方法中的Startup.ConfigureServices
,但我需要在应用程序启动后生成程序集。
答案 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