微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

启动项目ASP.NET Core 3.1后添加程序集控制器并在运行时查看

如何解决启动项目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”,则一切正常。 如果将代码移至其他操作(在应用程序运行并开始运行其他操作之后),则代码不起作用,并且我看到该错误

  1. 我忘记了什么?
  2. 为什么在项目的“初次采取行动”中使用代码很好,但对其他人却不行?
  3. 一个动作与其余动作有什么区别?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。