代码之家  ›  专栏  ›  技术社区  ›  Andreas Zita

在运行时替换MVC应用程序部件和Razor文件提供程序

  •  3
  • Andreas Zita  · 技术社区  · 8 年前

    我有一个WebAPI/MVC应用程序,它加载带有嵌入式控制器和视图的独立插件程序集,并将它们放入MVC PartManager。这很好,但现在我希望能够在运行时交换这些部分,而无需重新启动服务器。我可以使用PartManager。删除旧零件并添加新零件,但这似乎不够。调用控制器时,我仍然会从旧部分中的旧控制器得到响应。

    除了在PartManager中添加部件外,我还将EmbeddedFileProvider添加到Configure上的RazorViewEngineOptions中,因为仅仅添加AssemblyPart似乎不足以让Razor引擎找到视图(我不确定是否正确)。但我不知道是否可以在运行时替换Razor文件提供程序?我没有找到办法。

    无论如何,做这一切的首选方式是什么,我指的是用控制器、视图和静态资源加载/替换DLL。我走对了吗?

    1 回复  |  直到 8 年前
        1
  •  2
  •   user1023602 user1023602    8 年前

    我认为Razor视图引擎只配置了一次,所以以后不能更改它们。

    你怎么了 可以 做就是做

    • 运行多个视图引擎,
    • 根据URL在它们之间进行选择(就像您的情况一样,您希望为一个控制器使用不同的引擎)。

    Scott Hanselsman的CUSTOMMOBILEVIEWENGINE一节对此进行了描述 blog post 。他所做的是为不同的设备使用不同的视图引擎,但您可以根据自己的目的调整该技术。