如何解决启动项目ASP.NET Core 3.1后添加程序集控制器并在运行时查看
我希望在运行时加载程序集,而不是在启动应用程序后启动(启动)。 为此,我通过Internet和StackOverflow搜索了许多解决方案。 我在ASP.Net Core register Controller at runtime
找到了答案 cnxiaoby说:创建ActionDescriptor并在启动时注册它。
然后,您可以在任何地方使用_partManager.ApplicationParts.Add(assembly);
一切都很好,但是我只能在运行时添加Controller类,如果要在启动应用程序后在运行时添加Razor视图,则会得到"Not Found View Index"
var newView = AssemblyLoadContext.Default.LoadFromAssemblyPath(data.FullName);
var viewAssembly = new CompiledRazorAssemblyPart(newView);
_partManager.ApplicationParts.Add(viewAssembly);
var targetAssembly = new AssemblyPart(assembly);
_partManager.ApplicationParts.Add(targetAssembly);
之后,我将“自定义操作描述符”设置为此:
MyActionDescriptorChangeProvider.Instance.TokenSource.Cancel();
编辑: 该代码在HomeController.cs和SampleAction中 如果我将所有代码放入HomeController.cs并索引“ Action”,则一切正常。 如果将代码移至其他操作(在应用程序运行并开始运行其他操作之后),则代码不起作用,并且我看到该错误。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。