Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在不重新启动AppDomain的情况下在运行时向MVC4添加模块_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 如何在不重新启动AppDomain的情况下在运行时向MVC4添加模块

C# 如何在不重新启动AppDomain的情况下在运行时向MVC4添加模块,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我正在开发一个多租户MVC4 web门户,该门户旨在托管动态生成的MVC4应用程序 用例:客户机使用web门户上传xml规范。该规范被传递到一个web服务,该服务生成一个mvc4应用程序,对其进行编译,并将一个zip文件返回到门户,其中包含视图、css、javascript和一个dll(已编译的c#代码)。然后,门户将解压收到的zip文件,并将其内容放在门户内部的文件夹(模块)中。然后,客户端可以浏览新“部署”的应用程序。可以部署同一应用程序的多个版本,我计划为每个部署使用不同的名称空间。注意:

我正在开发一个多租户MVC4 web门户,该门户旨在托管动态生成的MVC4应用程序

用例:客户机使用web门户上传xml规范。该规范被传递到一个web服务,该服务生成一个mvc4应用程序,对其进行编译,并将一个zip文件返回到门户,其中包含视图、css、javascript和一个dll(已编译的c#代码)。然后,门户将解压收到的zip文件,并将其内容放在门户内部的文件夹(模块)中。然后,客户端可以浏览新“部署”的应用程序。可以部署同一应用程序的多个版本,我计划为每个部署使用不同的名称空间。注意:生成的模块具有一些依赖项,这些依赖项将由web门户使用DI注入器注入(考虑使用ninject)

我做了很多关于如何构建模块化MVC应用程序的研究。我研究了MVC领域,研究了MEF、DI框架,研究了nopCommerce和orchard代码。有一件事我似乎找不到答案,那就是如何在运行时添加模块而不需要重新启动AppDomain?另外,是否有一种简单的方法可以在运行时为每个模块注册路由


我试图避免应用程序重新启动,因为可能有其他人在使用门户/部署的模块,而其他人正在上载新的规范。

您是否看过(只是稍微过时了一点)教程?它不会解决重新扫描模块的问题,但引入的
PluginAreaBootstrapper
类似乎是一个良好的开端。也许您可以在系统中的特定事件上运行
PluginAreaBootstrapper
Init()
方法(我们称之为
OnNewModuleDeployed
)。

谢谢发布。我确实看了这篇博文。我们最后走了另一条路。如果我有时间,我会发布一个答案。我们的解决方案不需要重新启动AppDomain。